Django框架学习笔记(7.基于正则表达式的URL)
创建Django工程,配置完成,创建APP
urls.py
from django.conf.urls import url from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index), url('^detail-(\d+).html', views.detail), ]
views.py
from django.shortcuts import render from django.shortcuts import redirect # Create your views here. USER_DICT = { '1': {'name': 'root1','email': '[email protected]'}, '2': {'name': 'root2','email': '[email protected]'}, '3': {'name': 'root3','email': '[email protected]'}, '4': {'name': 'root4','email': '[email protected]'}, '5': {'name': 'root5','email': '[email protected]'}, } def index(request): return render(request, 'index.html', {'user_dict':USER_DICT}) def detail(request,nid): detail_info = USER_DICT[nid] return render(request, "detail.html", {'detail_info': detail_info})
index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> {% for k,row in user_dict.items %} <li><a target="_blank" href="/detail-{{ k }}.html">{{ row.name }}</a></li> {% endfor %} </ul> </body> </html>
detail.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>详细信息</h1> <h6>用户名:{{ detail_info.name }}</h6> <h6>邮箱:{{ detail_info.email }}</h6> </body> </html>
运行:
点击后,以及新的URL:
URL要传递多个数据时候,严格按照顺序传递的,并且函数定义必须有相应个数的参数,
可以这样写改变顺序:
url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+)', views.detail),
def detail(request, nid, uid):
写成这样后可以穿任意个数参数:
def detail(request, *args, **kwargs):
建议使用这种方式