zoukankan      html  css  js  c++  java
  • Django3 路由文件位置/文件格式/路由传值=8

    一、路由系统

    路由先从setting.py文件中指定的ROOT_URLCONF主路由文件中的urlpatterns从上往下依次进行匹配,匹配到后返回相应视图
    或匹配到include,将剩余字符发送给其进行继续匹配。

    1.1 路由文件位置

    主路由文件:默认项目根目录下urls.py

    """mysite URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/3.1/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  path('', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.urls import include, path
        2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
    """
    

    这个文件是在项目目录下setting.py中指定的,比如:

    ROOT_URLCONF = 'mysite.urls'
    

    其它app的路由文件则可以由此主路由文件包含:

    from django.contrib import admin
    from django.urls import include,path
    
    urlpatterns = [
        path('learn/', include('learn.urls')),
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    ]
    
    

    1.2 路由文件格式

    路由是视图的路由,由访问者访问的url进行匹配,定位到具体的View视图。
    视图可以直接渲染字符串进行响应,也可以渲染模版进行响应。
    而视图一般有三种:

    1、基于函数的视图
    先import相应views文件from my_app import views,然后添加urlpatternspath('', view.home, name='home')
    2、基于类的视图
    先引入相应类from other_app.views import Home,然后添加urlpatternspath('',Home.as_view(), name='home')
    3、包含其它url配置文件
    先引入include()函数from django.urls import include, path,然后添加urlpatternspath('blog/', include('blog.urls'))

    注:匹配支持正则表达式。

    当设置include时,可以include文件,也可以include其他序列,比如:

    from django.urls import include, path
    
    from apps.main import views as main_views
    from credit import views as credit_views
    
    extra_patterns = [
        path('reports/', credit_views.report),
        path('reports/<int:id>/', credit_views.report),
        path('charge/', credit_views.charge),
    ]
    
    urlpatterns = [
        path('', main_views.homepage),
        path('help/', include('apps.help.urls')),
        path('credit/', include(extra_patterns)),
    ]
    

    二、接收额外参数

    2.1 URL传值

    比如说我们URLConf添加一个int值的id参数:
    参数格式:<类型:值>

    符号 说明
    str 字符串
    int 整数
    slug 对应ascii所组成的字符
    uuid 对应uuid格式字符串
    path 对应完整URL路径
    path('about/<int:id>/', views.about, name='about'),
    

    然后在Views中接收这个参数:

    def about(request, id):
        return render(request, 'learn/aboutus.html', {'id':id})
    

    之后我们在前端使用这个参数:

    <h2>This is about page{{ id}}!</h2>
    

    访问效果:

    2.2 POST传值

    post 传值的话,是在html中使用表单,

    <input type="text" name="<para_name>">
    

    使用的时候在views.py中方法的request方法接收:

    def getpara(request):
        name = request.POST['<para_name>']
    

    然后就可以使用这个值了。

    2.3 传统(get/post)传值

    像传统上的?id=xx&name=na这种方式的传值django会忽略。

  • 相关阅读:
    sql两个字段相加减,第三个字段没有值的原因.
    CF 447B(DZY Loves Strings-贪心)
    Appium AndroidKeyCode
    初探Java多线程
    模拟实现Spring IoC功能
    Cordova 5 架构学习 Weinre远程调试技术
    快学Scala习题解答—第三章 数组相关操作
    org.hibernate.AssertionFailure: null id in com.you.model.User entry (don&#39;t flush the Session after a
    Swift3.0语言教程替换子字符串
    DHCP欺骗(DHCP Sproofing)
  • 原文地址:https://www.cnblogs.com/amnotgcs/p/13799248.html
Copyright © 2011-2022 走看看