django重點之url別名[參數名必須是name,格式是name="XXX]
1 不論后台路徑如何進行修改路徑,前台訪問的路徑不變,永遠是alias, 這樣方便開發 2 3 前台根據 {{ url "alias"}} 去views.py中查看name="alias"的url
1 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 設置templates的路徑為Django以前版本 2 # 'DIRS': [], # 注釋掉該行,此為Django 2.0.1最新版本 3 # 'django.middleware.csrf.CsrfViewMiddleware', 4 ...省略默認配置 5 STATIC_URL = '/static/' 6 TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) # 原配置 7 # 靜態資源文件 8 STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics"),) # 現添加的配置,這里是元組,注意逗號
templates/aliax.html:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> <meta charset="UTF-8"></head> 4 <body> 5 {#<form action="/func_alias/" method="post">#} {# 這個是最開始的路徑,正常路徑 #} 6 {#<form action="{% url aliax %}" method="post"> {# 報錯,NoReverseMatch at /func_alias/ #} 7 <form action="{% url 'alias' %}" method="post"> {# 注意,action外部沒有引號,大括號里面url 引號XXX #} 8 <input type="text" name="user"> {# 注意,這里只能用name,不能用id哈 #} 9 <input type="password" name="pass"> {# 注意,這里只能用name,不能用id哈 #} 10 <input type="submit" value="submit"> 11 </form> 12 </body> 13 </html>
mysite2/urls.py
from django.contrib import admin from django.urls import path from blog import views from django.conf.urls import url urlpatterns = [ # URL第四個參數別名操作,name="XXXX",name里面的值代表的是我們的URL路徑 url(r'^func_alias', views.func_alias, name="alias"), # 將路徑名跟函數進行映射 ]
views.py
1 from django.shortcuts import render, HttpResponse 2 import datetime 3 # URL之別名操作 4 def func_alias(request): 5 if request.method == "POST": 6 username = request.POST.get("user") 7 password = request.POST.get("pass") 8 if username == "hhh" and password == "123": 9 print("username: %s password: %s" % (username, password)) 10 return HttpResponse("登錄成功".encode("utf8")) 11 return render(request, "alias.html")
1 1、url的語法 2 url(regex,views,kwargs,name) 3 name:為了給當前的url或地址起別名,反向解析時用。 4 反向解析:通過name的值來匹配出對應的regex(地址) 5 url(regex,views,kwargs=None,name='別名') 6 7 2、在模板中通過別名找地址 8 {% url '別名' %} 9 10 帶參數的別名 11 {% url '別名' 參數1 參數2 ... %}(中間是空格) 12 13 eg: 14 url(r'^test_server/(\d+)/(\w+)$',test_server_views,name="test_server"), 15 <p><a href='{% url "test_server" 5 "jing" %}'>點我</a></p> 16 def test_server_views(request,name,age): 17 18 19 20 eg: 21 url(r'^test_server/$',test_server_views, 22 <p><a href="/test_server/?name=jing&age=18">點我</a></p> 23 def test_server_views(request,name,age): 24 # print(request.GET["age"])