1. 程式人生 > >【django+xadmin實戰】0131筆記——使用者模組(1)

【django+xadmin實戰】0131筆記——使用者模組(1)

一、
1.index介面的配置,
    在url檔案下面配置:from django.views.generic import TemplateViewurl('^$', 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方法,進行邏輯判斷: 1AUTHENTICATION_BACKENDS = ['users.views.CustomBackend',] 2class 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 }}