• Django学习的第二天


    一.路由系统:
    第一种:url(r'^index/', views.index) 函数方式, 请求发起一个url,在views里面的index函数处理请求
    第二种:url(r'^index/', views.index.as_view()),类的方式, 请求发起一个url,在views里面的indexl类处理请求
    from django.views import View
    class index(View):

    def dispatch(self, request, *args, **kwargs):
    # 调用父类中的dispatch,里面处理反射关系,我们继承父类并且可以写自己的功能,相当于装饰器
    print('before')
    result = super(Home,self).dispatch(request, *args, **kwargs)
    print('after')
    return result

    def get(self,request):
    """处理get请求"""

    def post(self,request):
    """处理post请求"""
    第三种利用正则表达式:
    1、url(r'^detail-(d+).html', views.detail),
    处理函数里面
    def detail(request, nid):
    """传过来几个值就写几个参数接收"""
    里面nid就是传过来匹配到的值还可以这么写
    def detail(request, *args, **kwargs):
    ""*args"""接收传过来的值
    2、url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html', views.detail)
    以键值对的方式传递过去,这样就不应担心传过去的顺序了,同样可以利用上面的方式接收kwargs为接收的字典

    二 几个viwes里面方法:
    request.path_info 一个字符串,在某些 Web 服务器配置下,主机名后的 URL 部分被分成脚本前缀部分和路径信息部分。path_info 属性将始终包含路径信息部分,不论使用的Web 服务器是什么。
    request.GET.get(" ") 用来获取get请求发来的数据
    request.POST 用来获取post请求发来的数据
    request.method 用于判断发送发送方式,
    request.POST.getlist() checkbox等多选的内容
    obj = request.FILES.get('fafafa') 用于获取上传的文件,利用对象的chunks()一点一点的上传
    eg:
    import os
    file_path = os.path.join('upload', obj.name)
    f = open(file_path, mode="wb")
    for i in obj.chunks():
    f.write(i)
    f.close()
      注意,FILES 只有在请求的方法为POST 且提交的<form> 带有enctype="multipart/form-data" 的情况下才会包含数据。
       否则,FILES 将为一个空的类似于字典的对象。
    name的用法举例
    对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****
    url(r'^asdfasdfasdf/', views.index, name='i1'),
    url(r'^yug/(d+)/(d+)/', views.index, name='i2'),
    url(r'^buy/(?P<pid>d+)/(?P<nid>d+)/', views.index, name='i3'),



    def index(request, *args, **kwargs):
    from django.urls import reverse

    url1 = reverse('i1') # asdfasdfasdf/
    url2 = reverse('i2', args=(1,2,)) # yug/1/2/
    url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/


    xxx.html

    {% url "i1" %} # asdfasdfasdf/
    {% url "i2" 1 2 %} # yug/1/2/
    {% url "i3" pid=1 nid=9 %} # buy/1/9/

    三、多级路由
    project/urls.py
    from django.conf.urls import url,include
    from django.contrib import admin

    urlpatterns = [
    url(r'^cmdb/', include("app01.urls")),
    url(r'^monitor/', include("app02.urls")),
    ]

    app01/urls.py
    from django.conf.urls import url,include
    from django.contrib import admin
    from app01 import views

    urlpatterns = [
    url(r'^login/', views.login),
    ]

    app02/urls.py
    from django.conf.urls import url,include
    from django.contrib import admin
    from app02 import views

    urlpatterns = [
    url(r'^login/', views.login),
    ]
  • 相关阅读:
    用户体验评价
    第十三周总结
    第十二周总结
    单词统计
    第十一周总结
    冲刺(十一)
    用户模板和用户场景
    冲刺(十)
    冲刺(九)
    IOS 学习记录
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/12731931.html
Copyright © 2020-2023  润新知