配置首页和登陆页面
首先进入urls.py,
可以像上面这样配置url,也可以使用django自带的类来辅助配置,不用写后台的方法。
from django.views.generic import TemplateView
url建议写成下图样式,这样的话后期如果要修改路径就十分方便,只需要在urls中修改即可。
from django.contrib import admin
from django.urls import path
from django.views.generic import TemplateView
import xadmin
urlpatterns = [
# path('admin/', admin.site.urls),
path('xadmin/', xadmin.site.urls),
path('index/', TemplateView.as_view(template_name='my_index.html'),name='index'),
path('login/', TemplateView.as_view(template_name='login.html'), name='login'),
path('logout/', TemplateView.as_view(template_name='logout.html'), name='logout'),
path('register/', TemplateView.as_view(template_name='register.html'), name='register'),
# user
path('user_center/', TemplateView.as_view(template_name='user_center.html'), name='user_center'),
path('user_message/', TemplateView.as_view(template_name='user_message'), name='user_message'),
# course
path('course_list/', TemplateView.as_view(template_name='course_list.html'), name='course_list'),
# teacher
path('teacher_list/', TemplateView.as_view(template_name='teacher_list.html'), name='teacher_list'),
]
在html表示跳转时可以这样使用: <a class="personcenter fl" href="{% url 'user_center' %}">进入个人中心</a>
view
完成view的两种方式:
1、CBV:class base view
2、FBV:function base view
在之前的学习中使用的是FBV,这次开发使用的是CBV
# users.view
from django.shortcuts import render
from django.views.generic.base import View
class LoginView(View):
def get(self, request):
pass
def post(self, request):
pass
点进view的源码,找到dispatch,将其参数复制过来
def get(self, request, *args, **kwargs):
pass
在urls.py中引用
from apps.users.views import LoginView
path('login/', LoginView.as_view(), name='login'),
登陆验证的配置
1、获取输入的用户名与密码
class LoginView(View):
def get(self, request, *args, **kwargs):
return render(request, 'login.html')
def post(self, request, *args, **kwargs):
user_name = request.POST.get("username", "")
password = request.POST.get("password", "")
2、验证
方法一:
from apps.users.models import UserProfile
user = UserProfile.objects.get(username = user_name)
'''1、通过用户名查询到用户是不合理的,需要使用密码校验
2、数据库中存储的密码是密文,查询时需要加密密码后查询'''
方法二:可以使用内置方法
from django.contrib.auth import authenticate
class LoginView(View):
def get(self, request,