ディレクトリ
URLルーティングシステム
URLの設定
DjangoのディレクトリサイトのサポートなどのURLの構成(のURLconf)。その本質は、URLとあなたがそのビュー機能を呼び出したいURLとの間のマッピングテーブルです。あなたは、Djangoに教えるこのURLのコードを呼び出して、そのURLのためにそのコードを呼び出すために、このようなやり方でいます。
基本フォーマット:
from django.conf.urls import url
#循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似,就是请求信息的所有内容
urlpatterns = [
url(正则表达式, views视图函数,参数,别名),
]
パラメータ説明
- 正規表現:正規表現文字列
- ビュービュー機能:呼び出し可能なオブジェクトは、典型的には、文字列パスビュー機能は、ビューまたは関数として指定されます
- パラメータ:デフォルトのビュー機能(辞書)に渡されるオプションのパラメータ
- 別名:オプションのパラメータ名
正規表現
例:年、月、対応する記事を検索します。結果は:http://127.0.0.1:8000/articles/2019/9/を入力します。
URLの基本的な構成
不明な、よく知られているグループ。
設定されているという名前の正規表現構文をグループ化(?P<name>pattern)
され、name
グループの名前で、pattern
マッチするパターンです。
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [url(r'^admin/', admin.site.urls),
url(r'^home/', views.home),
#路径分发 不区别请求方法
url(r'^login/', views.login),
# 无名分组参数articles会携带两个分组的位置参数,一一对应
# url(r'^articles/(\d+)/(\d+)/', views.articles),
# 有名分组参数articles会携带两个分组的关键字参数
url(r'^articles/(?P<y>\d+)/(?P<m>\d+)/', views.articles),]
ビュービュー
あなたは、ビュー機能のデフォルト値を指定することができます。
from django.shortcuts import render, HttpResponse
# Create your views here.
def home(request):
print(request.path)
# return HttpResponse('hahaha') # 返回字符串
return render(request,'home.html') # 返回html文件
def login(request):
if request.method == 'POST':
print(request.POST)
# <QueryDict: {'username': ['yan'], 'pwd': ['123']}>
name = request.POST.get('username')
pwd = request.POST.get('pwd')
if name == 'yan' and pwd == '123':
return HttpResponse('登录成功!')
else:
return HttpResponse('登录失败!')
else:
return render(request, 'login.html')
# 无名匹配分组执行的函数,是位置参数
# def articles(request,year,month):
# print(year,month) # 获取到year="2019" month="9"
# return HttpResponse(year+'年'+month+'月所有文章!')
# 有名匹配分组执行的函数,是关键字参数
def articles(request,m,y):
print(y, m) # 获取到y="2019" m="9"
return HttpResponse(y + '年' + m +'月所有文章!')
注意事項
- 試合が中止に成功したら、正規表現を照合することによって、トップ1から書き込み順でurlpatterns要素。
- URLから値をキャプチャするには、それだけの周り(パケットが一致する)括弧のペアを配置します。
- リードバックスラッシュを追加する必要はありません各URLを持っているので、(それは/定期の前面に書かれています)。例えば、それは^記事、ない^ /記事でなければなりません。
- 「R」の前に、各正規表現は任意ですが、追加提案しました。
- ^記事&何最後に、何を、厳しく制限されたパスで始まります。
キャプチャー・パラメーターは常に文字列です。
それぞれがどのように一致するように関係なく、正規表現の、ビューに渡される通常のPython文字列としてのURLconfパラメータで捕獲しました。(また、数字の文字列型)
login.htmlとファイル
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>24期官网</h1>
<form action="/login/" method="post">
<!-- http://127.0.0.1:8000/login/ /login/前面的/代表根目录 -->
<!-- 如果不加前面的 / http://127.0.0.1:8000/login/login/ -->
用户名:<input type="text" name="username">
密码:<input type="password" name="pwd">
<input type="submit">
</form>
</body>
</html>
含める - URL分布を
python manage.py startappのapp02#でアプリケーション設定、および設定を追加
URLの設定
urlpatterns = [
url(r'^app01',include('app01.urls')),
# http://127.0.0.1:8000/app01/xxx 只要匹配到app01,就会去app01.urls文件下匹配 xxx
url(r'^app02',include('app02.urls')),
url(r'^$', views.base) # 首页 不加任何路径,只有 127.0.0.1:8000
]