Просмотр исходного кода

完成了注册和登录功能的后端

Shellmiao 4 лет назад
Родитель
Сommit
3647771dae
7 измененных файлов с 60 добавлено и 6 удалено
  1. 2 2
      MeChat/urls.py
  2. 2 2
      account/form.py
  3. 1 1
      account/templates/login.html
  4. 30 0
      account/templates/register.html
  5. 1 0
      account/urls.py
  6. 24 1
      account/views.py
  7. BIN
      db.sqlite3

+ 2 - 2
MeChat/urls.py

@@ -18,6 +18,6 @@ from django.urls import path, include
 
 urlpatterns = [
     path('admin/', admin.site.urls),
-    path('chat/', include('chat.urls')),
-    path('account/', include('account.urls')),
+    path('chat/', include(('chat.urls', "chat"), namespace='chat')),
+    path('account/', include(('account.urls', "account"), namespace='account')),
 ]

+ 2 - 2
account/form.py

@@ -18,10 +18,10 @@ class UserRegisterForm(forms.ModelForm):
 
     def clean_password2(self):
         data = self.cleaned_data
-        if data.get('password') == data.get('password'):
+        if data.get('password') == data.get('password2'):
             return data.get('password')
         else:
-            return forms.ValidationError('密码输入不一致,请重新输入!')
+            raise forms.ValidationError('密码输入不一致,请重新输入!')
 
 
 class ProfileForm(forms.ModelForm):

+ 1 - 1
account/templates/login.html

@@ -11,7 +11,7 @@
             <!-- 密码 -->
             <div>
                 <label for="password">密码</label>
-                <input type="text" id="password" name="password">
+                <input type="password" id="password" name="password">
             </div>
             <!-- 提交按钮 -->
             <button type="submit">提交</button>

+ 30 - 0
account/templates/register.html

@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html lang="zh-cn">
+    <div>
+        <form method="post" action=".">
+            {% csrf_token %}
+            <!-- 昵称 -->
+            <div>
+                <label for="username">昵称</label>
+                <input type="text" id="username" name="username">
+            </div>
+            <!-- 邮箱 -->
+            <div>
+                <label for="email">邮箱</label>
+                <input type="text" id="email" name="email">
+            </div>
+            <!-- 密码 -->
+            <div>
+                <label for="password">设置密码</label>
+                <input type="password" id="password" name="password" required>
+            </div>
+            <!-- 确认密码 -->
+            <div>
+                <label for="password2">确认密码</label>
+                <input type="password" id="password2" name="password2" required>
+            </div>
+            <!-- 提交按钮 -->
+            <button type="submit">提交</button>
+        </form>
+    </div>
+</html>

+ 1 - 0
account/urls.py

@@ -3,4 +3,5 @@ from . import views
 
 urlpatterns = [
     path('', views.user_login, name='login'),
+    path('register/', views.user_register, name='register'),
 ]

+ 24 - 1
account/views.py

@@ -1,6 +1,6 @@
 from django.shortcuts import render, redirect
 from .form import UserLoginForm, UserRegisterForm
-from django.contrib.auth import authenticate, login
+from django.contrib.auth import authenticate, login, logout
 from django.http import HttpResponse
 
 
@@ -26,3 +26,26 @@ def user_login(request):
         return render(request, 'login.html', context)
     else:
         return HttpResponse("请使用GET或者POST请求数据")
+
+
+def user_logout(request):
+    logout(request)
+    return redirect("chat:index")
+
+
+def user_register(request):
+    if request.method == 'POST':
+        user_register_form = UserRegisterForm(data=request.POST)
+        if user_register_form.is_valid():
+            new_user = user_register_form.save(commit=False)
+            new_user.set_password(user_register_form.cleaned_data['password'])
+            new_user.save()
+            return redirect("account:login")
+        else:
+            return HttpResponse('注册表单输入有误,请重新输入')
+    elif request.method == 'GET':
+        user_register_form = UserRegisterForm()
+        context = {'form': user_register_form}
+        return render(request, 'register.html', context)
+    else:
+        return HttpResponse('请使用POST或GET请求数据')