ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【django学习-03】URLS(路由系统)

2022-08-30 22:31:51  阅读:182  来源: 互联网

标签:03 URLS views py 视图 django urls path include


  • 一:URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。
    • urlpatterns = [url(正则表达式, views视图函数,参数,别名),]

      • 参数说明:
      • 一个正则表达式字符串
      • 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
      • 可选的要传递给视图函数的默认参数(字典形式)
      • 一个可选的name参数
    • 1、参数1

      • 可以使用正则表达式提取参数,传递给视图函数进行逻辑判断
      • 1.1:无命名
#urls.py
re_path('mydata/([0-9]{4})/([0-9]{2})',views.myData),     #视图函数需要传入两个形参接收这里()起来的内容,无命名

#views.py
def myData(req,y,m):
    return HttpResponse("year"+ y+"month"+m)
- 1.2:有命名
#urls.py
re_path('mydata_name/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})',views.myData_name),     #视图函数需要传入两个参接收这里正则提取的内容,有命名

#views.py
def myData_name(req,year,month):
    return HttpResponse("year"+ year+"month"+month)
  • 2、参数2,对应的views视图函数名称
  • 3、参数3
  • 必须传入键值对
#urls.py
re_path('mydata_name1/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})',views.myData_name1,{"name":"xwl"}),

#views.py
def myData_name1(req,year,month,name):
    return HttpResponse("year"+ year+"month"+month+name)
  • 4、参数4
    • 别名,目的:后台修改路径,前端不需要逐个替换,使用别名即可
#urls.py
re_path('login',views.login,name="xwl"),

#views.py
def login(req):
    if req.method == "POST":
        username = req.POST.get("username")
        pwd = req.POST.get("pwd")
        if username == "xwl" and pwd == "123":
            return HttpResponse("登录成功!!!")

    return render(req,"login.html")

#templates/login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{#<form action="/login" method="post">#}
<form action="{% url "xwl" %}" method="post">
{#    使用别名#}
    <input type="text" name="username">
    <input type="password" name="pwd">
    <input type="submit" value="submit">
</form>

</body>
</html>
  • 二:路由分发
    • 试想一下,向京东这种大项目,网页有成千上万,我们在整个urls中逐一配置每个页面的话,可能有冲突、不方便管理。如是我们可以在不同的APP下新建urls.py,管理相应app的路由映射。在总的urls.py中分发即可
    • 1、对应的APP下新建urls.py文件
    • 2、注释掉mysite828/urls.py中的路由,拷贝到blog/urls.py文件中
    • 3、mysite828/urls.py中路由分发
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
- 4、blog/urls.py配置即可
#mysite828/urls.py
from django.contrib import admin
from django.urls import path,re_path,include
from blog import views

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('^blog/', include("blog.urls")),
]

#views.py
def include_ces(req):
    return HttpResponse("include")

#blog/urls.py
from django.urls import path,re_path,include
from blog import views

urlpatterns = [
    re_path('include/', views.include_ces),

]

标签:03,URLS,views,py,视图,django,urls,path,include
来源: https://www.cnblogs.com/xwltest/p/16641113.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有