1. 用户访问 http://127.0.0.1:8000/login/ 可以看到路径为login/。
2. login/路径将对应主项目下urls.py中的login/。
from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path("timer/", views.get_timer), path("login/", views.login), path("auth", views.auth) ]
可以看到login/路径对应的是app01下的views下的login函数。
3. 找到app01下的views.py文件,如下:
from django.shortcuts import render import datetime # Create your views here. def login(request): return render(request,"login.html")
可以看到返回的是一个login.html。
4. 找到对应的timer.html,这里我们注意到代码中没有跟路径,说明这个文件在默认路径下,Django的默认路径在setting.py中设置。如下:
import os TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
这里需要先import os,然后在将templates文件夹指定为模板文件的存放位置。
5. 打开templates文件夹找到login.html,内容如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="/auth" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="password" name="password"> <input type="submit"> </form> </body> </html>
这里有一个form表单用于携带登陆输入的账号密码输入框,说明:
6. 需要注意,默认情况下Django不接受匿名post,所以这里需要关闭这个检测功能,打开setting.py,注释掉相关功能,否则会报错。
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
7. 由于用户点击提交之后需要向/auth发起post请求,所以我们需要在urls.py里面添加auth路径,让用户提交的数据可以被接收。
from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path("timer/", views.get_timer), path("login/", views.login), path("auth", views.auth) ]
这里需要注意,auth后面不能带/,带了会报错。这里我们将post过来的数据传给views.auth函数来处理。
8. 找到views.auth函数:
from django.shortcuts import render import datetime # Create your views here. def login(request): return render(request,"login.html") def auth(request): user = request.POST.get("username") password = request.POST.get("password") if user == "a" and password =="1": return HttpResponse("登陆成功") else: return HttpResponse("登陆失败")
这里我们看到,收到用户名和密码之后,将判断其用户名和密码是否正确,给出对应的返回结果。