ICode9

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

django_url路由控制系统

2021-07-16 11:04:23  阅读:145  来源: 互联网

标签:views url month year path article django 路由



Django URL(路由系统)

一、语法
urlpatterns = [
path(正则表达式,views视图函数,参数,别名),
]

参数说明:
1.一个正则表达式字符串
2.一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
3.可选的要传递给视图函数的默认参数(字典形式)
4.一个可选的name参数
例如:
urlpatterns = [
path('admin/',admin.site.urls), #默认的
path('blog/',views.blog),
]

二、正则字符串参数

urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]
注:一旦匹配成功则不再匹配后面的
若要从URL中捕获一个值,只需要在它周围放置一对圆括号
不需要添加一个前导的反斜杠,因为每个URL都有。例如,应该是 ^ articles而不是 ^ / articles。
每个正则表达式前面的'r'是可选的但是建议加上

设置是否开启URL访问地址后面不为/跳转至带有/的路径
APPEND_SLASH=True


三、有名分组(named group)
在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式
from django.conf.urls import url
from . import views

urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]
注:\d代表数字
{4}说明重复四次
?P有名分组
<year>真正的名字


###实例:
url 文件

urlpatterns = [
path('admin/', admin.site.urls),
#无名分组
path('article1/\d{4}', views.article_year0), #得到固定的
path('article2/(\d{4})',views.article_year), #输入什么得到什么
path('article3/(\d{4})/(\d{2})',views.article_year_month),
path('article4/(\d{4})/(\d{2})/(\d{2})',views.article_year_month_day),

#有名分组
url(r'article5/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})',views.article_year_month_day),

path('register/',views.register,name="reg"), #reg是别名
]

###views文件
#输出固定的2004
def article_year0(request):
return HttpResponse("2004")
#根据输入来输出
def article_year(request,year): #year就是url里面的参数
return HttpResponse(year)
def article_year_month(request,year,month):
return HttpResponse("year:%s month:%s"%(year,month))
def article_year_month_day(request,year,month,day):
return HttpResponse("year:%s month:%s day:%s"%(year,month,day))


##别名的使用

urlpatterns = [
path('register/',views.register,name="reg"), #reg是别名
]

##views文件
def register(request):
if request.method == "POST":
print(request.POST.get("user"))
print(request.POST.get("age"))
print(request.POST.get("hobby"))
user = request.POST.get("user")
if user == "kang":
return redirect('/login/') #跳转到页面login

return HttpResponse("success!")
return render(request,"register.html")

##html文件

<h1>学生注册</h1>
<hr>
<form action="{% url "reg" %}" method="post">
<p>姓名<label>
<input type="text" name="user">
</label></p>
<p>年龄<label>
<input type="text" name="age">
</label></p>
<p>爱好<label>
<input type="checkbox" name="hobby" value="篮球">
</label>篮球
<label>
<input type="checkbox" name="hobby" value="足球">
</label>足球
<label>
<input type="checkbox" name="hobby" value="乒乓球">
</label>乒乓球
</p>
<p><input type="submit">提交</p>
</form>

四、路由分发
urls文件配置
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
path('admin/', admin.site.urls),
path('app/',include('app.urls')),
]

然后在APP下面建立urls.py文件,在这个里面写APP下的url

标签:views,url,month,year,path,article,django,路由
来源: https://www.cnblogs.com/shadowfolk/p/15019095.html

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

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

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

ICode9版权所有