一、 1.index界面的配置, 在url文件下面配置:from django.views.generic import TemplateView,url('^$', TemplateView.as_view(template_name='index.html'), name="index"), 在settings文件下配置:STATICFILES_DIRS = [(os.path.join(BASE_DIR, 'statics'))] 2.html的替换路径:href="/statics/css/reset.css" 3.登录界面的跳转配置:url('^login/$', TemplateView.as_view(template_name='login.html'), name="login"), 二、用户登陆实现 1.配置view def user_login(request): if request.method == "POST": user_name = request.POST.get("username", "") user_password = request.POST.get("password", "") user = authenticate(username=user_name, password=user_password) if user is not None: login(request, user) return render(request, "index.html") else: return render(request, "login.html", {}) elif request.method == "GET": return render(request, "login.html", {}) 2.配置index登陆 {% if request.user.is_authenticated %} {% else %} {% endif %} 3.login界面配置:<form action="/login/" method="post" autocomplete="off"> 4.url界面配置:url('^login/$', user_login, name="login") 5.自定义auth方法,进行逻辑判断: 1)AUTHENTICATION_BACKENDS = ['users.views.CustomBackend',] 2)class CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): try: user = UserProfile.objects.get(username = username) if user.check_password(password): return user except Exception as e: return None 三、重写用户登陆方法(继承类的方法来实现) 1.from django.views.generic.base import View 2. class LoginView(View): def get(self, request): return render(request, "login.html", {}) def post(self, request): user_name = request.POST.get("username", "") user_password = request.POST.get("password", "") user = authenticate(username=user_name, password=user_password) if user is not None: login(request, user) return render(request, "index.html") else: return render(request, "login.html", {"msg": "用户名或密码错误"}) 3.修改url文件:url('^login/$', LoginView.as_view(), name="login") 四、form的用途 1.定义forms类: class LoginForm(forms.Form): username = forms.CharField(required=True) password = forms.CharField(required=True) 2.重写方法 def post(self, request): login_form = LoginForm(request.POST) if login_form.is_valid(): user_name = request.POST.get("username", "") user_password = request.POST.get("password", "") user = authenticate(username=user_name, password=user_password) if user is not None: login(request, user) return render(request, "index.html") else: return render(request, "login.html", {"msg": "用户名或密码错误"}) else: return render(request, "login.html", {"login_form": login_form}) 3.前端处理 (1)错误信息返回:{% if login_form.errors.username %} errorput {% endif %} (2)报错打印:{% for key,error in login_form.errors.items %}{{ error }} {% endfor %}{{ msg }}
【django+xadmin实战】0131笔记——用户模块(1)
最新推荐文章于 2024-04-29 16:07:24 发布