• 我的django笔记---1


    1.需求:访问某年出版的书返回给用户

    ①错误方式如下:如果url中含有正则参数,视图函数中必须传入相应的参数,否则会出现如下错误

    url(r'^book/(d+{4})/', views.index),
    
    
    def index(request):
        return HttpResponse('2000')
    

    1

    ②正确方式如下:正则分组中的参数会传入视图函数的参数中,因此视图函数必须加入参数

    url(r'^book/(d{4})/', views.index),
    
    
    def index(request,year):
        print(year)
        return HttpResponse(year)
    

    2.需求:访问某年某月出版的书返回给用户

    url(r'^book/(d{4})/(d{1,2})/', views.index),
    
    
    def index(request,year,month):
        print(year,month)
        return HttpResponse(year)
    

    ①错误方式如下:如果url中没有参数,视图函数中写了参数,则会出现如下错误

    url(r'^book/', views.index),
    
    
    def index(request,year,month):
        print(year,month)
        return HttpResponse(year)
    

    image-20200620121754642

    2.有名分组:

    url(r'^book/(?P<year>d{4})/(?P<month>d{1,2})/', views.index),
        #相当于参数传入到{"year":2000,“month":12}
        
        
    def index(request,year,month):
        print(year,month)
        return HttpResponse(year+month)
    #year和month顺序无所谓,但是必须和分组名一样
    

    3.url匹配顺序:

    ①匹配顺序从上到下,匹配到后就执行,例如输入:/book/2002/12,走第一个url

    第一个:url(r'^book/(d{4})/', views.index),
    
    
    第二个:url(r'^book/(?P<year>d{4})/(?P<month>d{1,2})/', views.index),
       
    

    ②解决方案:完全匹配

    第一个:url(r'^book/(d{4})/$', views.index),
    
    
    第二个:url(r'^book/(?P<year>d{4})/(?P<month>d{1,2})/$', views.index),
    

    4.关于输入url中是否结尾加""问题:

    ①如果输入不加“",django会发一个重定向让浏览器加上”"

    image-20200620125445627

    ②当在setting中设置APPEND_SLASH=False时,如果输入url中部包含“”会报错

    image-20200620130143475

    5.视图函数中指定默认值:

    image-20200620130829888

    6.url路由分发之include:

    ①在每个app目录下创建一个urls.py文件

    匹配过程:用户输入app01/index/,先把前面app01拿出来,后面再到app01应用下去匹配index/

    1.根目录下:
    urlpatterns = [
        url(r'^app01/', include('app01.urls')),
        url(r'^app02/', include('app02.urls')),
    ]
    2.app01目录下:
    urlpatterns = [
        url(r'^index/', views.index),
    
    ]
    3.app02目录下:
    urlpatterns = [
        url(r'^home/', views.home),
    
    ]
    

    7.pycharm中提供一个简便的执行python manage.py工具:

    image-20200620133832820

    8.首页url写法:

    ①如果按照下面写法,不管url是什么,都只能映射到第一个url路由中

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'',views.base),     #空表示什么路径都能匹配到
        url(r'^app01/', include('app01.urls')),
        url(r'^app02/', include('app02.urls')),
    ]
    
    

    ②解决方案如下:写成完全匹配

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$',views.base),     #空表示什么路径都能匹配到
        url(r'^app01/', include('app01.urls')),
        url(r'^app02/', include('app02.urls')),
    ]
    

    9.应用程序首页url写法:

    ①在应用程序的url中写完全匹配

    image-20200620141134042

    10.模板中a标签中写url定位格式为:

    ①直接写相对路径即可,两边加上"/"

    1.模板中:
    <a href="/app01/index/">app01应用</a>
    <a href="/app02/home/">app02应用</a>
    
    2.根目录中:
    urlpatterns = [
        url(r'^app01/', include('app01.urls')),
        url(r'^app02/', include('app02.urls')),
    ]
    

    11.HttpRequest对象:

    ①输入:http://127.0.0.1:8000/app01/index/?name=123&password=123

    1.print(request.GET)  # 给请求提交的数据
         <QueryDict: {'name': ['123'], 'password': ['123']}>
    2.print(request.POST)  # 给请求提交的数据
    	<QueryDict: {}>
    3.print(request.META)  # 请求头相关信息
    	一个字典{ 。。。 }包含很多东西
    4.print(request.path)  # /index/ 路径
    	/app01/index/
    5.print(request.path_info)  # /index/ 路径
    	/app01/index/
    6.print(request.get_full_path())  # 完整路径带参数
    	/app01/index/?name=123&password=123   
            
    

    ②表单中的post请求如果为空,表示提交当前页面的url

    <form action="" method="post">
      用户名: <input type="text" name="username">
      密码: <input type="text" name="password">
      <button>提交</button>
    </form>
    

    ③表单中的post请求提交后

    1.print(request.POST)  # 给请求提交的数据
    	<QueryDict: {'username': ['123'], 'password': ['123']}>
    2.print(request.body)  # 提交过来的原始数据
    	b'username=123&password=123'
    

    12.HttpResponse对象:

    image-20200620152434349

    ①重定向redirect:告诉浏览器让它重新发送请求

    def index(request):
        return redirect('/app02/home/')
    

    image-20200620153504724

  • 相关阅读:
    什么是tomcat集群?
    cmd黑客入侵命令大全
    Linix基本命令
    Windows CMD命令大全
    python 函数1
    Python 集合(set)使用
    python 数据字典应用
    python 数据运算
    python 数据类型(元组(不可变列表),字符串
    python 数据类型(列表)学习笔记
  • 原文地址:https://www.cnblogs.com/zhuxianxiaofan/p/13168962.html
Copyright © 2020-2023  润新知