作者:asx | 来源:互联网 | 2023-06-04 18:48
django重点之url别名[参数名必须是name,格式是name"XXX]1不论后台路径如何进行修改路径,前台访问的路径不变,永远是alias,这样方
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:
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 '{% url "test_server" 5 "jing" %}'>点我
16 def test_server_views(request,name,age):
17
18
19
20 eg:
21 url(r'^test_server/$',test_server_views,
22 "/test_server/?name=jing&age=18">点我
23 def test_server_views(request,name,age):
24 # print(request.GET["age"])