django寫一個簡單的登陸注冊


要寫這個,前提還是需要知道三個知識:
一個是urls.py,它是寫我們的路由關系的,之前我寫了通過wsgiref寫一個簡單的服務端,也用到了路由,就是
請求過來的url和視圖函數的對應關系。
二是就是幾個類,render,HttpResponse,redirect,我就說說功能
render:將模板(也就是html文件)渲染,再發送到前端頁面---大概就是這樣的功能,用詞不太准確
HttpResponse:將字符串返回到前端頁面
redirect:重定向的功能
三就是數據庫相關的,orm吧

1、注冊登陸兩個功能,想都不要在項目templates文件夾中寫兩個html頁面,一個是登陸,一個是注冊。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>register</title>
</head>
<body>
    <h1>注冊界面</h1>
    <form action="" method="post"> 用戶名:<input type="text" name="name"><br> 密碼:<input type="password" name="pwd"><br> 確認密碼:<input type="password" name="re_pwd"><br>
        <input type="submit" value="注冊">
    </form>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<h1>登陸界面</h1> {#最簡單的html代碼,哈哈#} {#這里要提醒下,提交到后台的get,post方式都可以,但是作為賬戶數據的話,用post#} <form action="/login/" method="post"> 用戶名:<input type="text" name="name"><br> 密碼:<input type="password" name="pwd"><br>
    <input type="submit" value="登陸">
</form>
</body>
</html>

2、寫好了我們首先去urls.py文件中寫好路由,把視圖函數映射關系寫好
 
        
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login', views.login), url(r'^register', views.register), ]
 
        
3、寫好了就去app01中view文件中寫相應的函數了,先寫個空函數占位吧
4、需要數據庫,先去app01中models.py寫一個類(也就是創建表),屬性寫好了,就執行兩句命令
  python3 manage.py makemigrations
  python3 manage.py migrate
這樣我們的表就創建好了,那么就應該去視圖函數寫相關邏輯
from django.db import models


# Create your models here.

class User(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)


##創建好了,就在cmd中執行上面兩條命令就好
5、在視圖函數中寫邏輯代碼
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.


def login(request):
    # request這是前端請求發來的請求,攜帶的所有數據,django給我們做了一些列的處理,封裝成一個對象傳過來
    # 其實挺簡單,學會用它給你的一些方法就好了,其實你自己也想到它是怎樣處理的。
    if request.method == 'GET':
        return render(request,'login.html')
    if request.method == 'POST':
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        user_obj = models.User.objects.filter(name=name,pwd=pwd).first()
        if user_obj:
            return HttpResponse('登陸成功')
        else:
            return HttpResponse('用戶名或密碼錯誤')

def register(request):
    if request.method == 'GET':
        return render(request,'register.html')
    if request.method == 'POST':
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        re_pwd = request.POST.get('re_pwd')
        if name and pwd and re_pwd:
            if pwd == re_pwd:
                user_obj = models.User.objects.filter(name=name).first()
                if user_obj:
                    return HttpResponse('用戶已存在')
                else:
                    models.User.objects.create(name=name,pwd=pwd).save()
                    return redirect('/login/')
            else:
                return HttpResponse('兩次密碼不一致')

        else:
            return HttpResponse('不能有空!')

6、啟動django項目就行了,然后在瀏覽器輸入對應的url,就行操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM