Django--视图层

Posted liu--huan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django--视图层相关的知识,希望对你有一定的参考价值。

自定义转换器(django2.0)

from django.urls import path, re_path, register_converter

class MyCon:
    # 写一个正则表达式
    regex = [0-9]{4}
    # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收
    def to_python(self, value):
        return int(value)
    # 反向解析用的
    def to_url(self, value):
        return %04d % value

from django.urls import register_converter
register_converter(MyCon,yyy)

path(test/<yyy:year>, views.re_test, name=test),

视图层——HttpRequest对象

路由层:
urlpatterns = [
    path(admin/, admin.site.urls),
    re_path(^test/(.*), views.re_test),
]

视图函数:
def re_test(request,every):
    # request.POST   # 前台Post传过来的数据,包装到POST字典中
    # request.GET  # 前台浏览器窗口里携带的数据,包装到GET字典中
    # request.method   # 前台请求的方式
    # request.body  # post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1
    # print(request.path) # 取出请求的路径,取不到数据部分
    # print(request.get_full_path())  # 取出请求的路径,能取到数据部分   结果:/test/user?name=xx&password=123
    # print(request.META)
    return HttpResponse(request)

视图层——HttpResponse对象

方法(1def re_test(request,every):
    # print(request.META)
    user = {user: lxx}
    print(every)
    return render(request,lxx.html,{name:user})

方法(2from django.template import Template,Context
 def re_test(request,every):
        if request.method == GET:
            temp = Template(<h1>{{ user }}</h1>)
            data = Context({"user":"lxx"})
            ret = temp.render(data)
            return HttpResponse(ret)

视图层——JsonResponse对象

方法(1)
def re_test(request,every):
     user = {user: lxx}
     js_data = json.dumps(user)
     return HttpResponse(js_data)

方法(2)  报错,默认不支持列表形式,要想支持改源码条件
def re_test(request,every):
    lis = [1,3]
    return JsonResponse(lis,safe=False)

视图层——CBV(类的视图)与FBV(函数视图)

路由层:url(r^test/, views.Test.as_view()),
视图层:
    from django.views import View
    class Test(View):
        def get(self, request):#一定要传request对象
            return HttpResponse(get-test)

        def post(self, request):
            return HttpResponse(post-test)

补充知识点(1):
路由跳转最原始页面与报错页面
urlpatterns = [
url(r‘^$‘, views.autherlist), 不输跳到最原始页面
...
url(r‘.*‘, views.error) 输任意字符跳转到报错页面
]

补充知识点(2):
%04d 占四位,少了前面用0补上,多了就是多了

补充知识点(3):
APPEND_SLASH = false 等于false不会补上 /
浏览器页面书路径时,默认会 给你补上 / http://127.0.0.1:8000/autherlist/

 

 

练习:

1 手动创建虚拟环境--用命令
2 往前台返回user字典:[{name:lqz,age:18},{name:lqz2,age:18}]
3 写一个文件上传:如果文件名字重复,不要覆盖,并且放到项目根路径的media文件夹下

 

















以上是关于Django--视图层的主要内容,如果未能解决你的问题,请参考以下文章

Django视图层之路由配置系统(urls)

Django视图层

Django的视图层

Django之视图层

Django框架----视图层

Django的视图层