Django 02 簡單註冊頁面的創建2

一、AJAX(異步請求)

有的時候我們必須點擊提交頁面才告訴我們用戶名重複,這樣很影響用戶體驗,所以我們應當在輸入密碼的時候就要告訴我們用戶名已存在

我們需要使用ajax(ajax:jquery 是一種靜態資源),不需要我們提交當我們輸入密碼的時候就可以告訴我們用戶名存在

1.什麼是AJAX?

AJAX=異步JavaScript 和XML

AJAX是一種用於創建快速動態網頁的技術.通過在後臺與服務器進行少量數據交接,AJAX可以使用網頁實現異步更新,這意味着可以在重新加載整個網頁的情況下,對網頁的某部分進行更新

傳統網頁(不適用AJAX)如果需要更新內容,必須重新加載整個網頁

有很多使用AJAX的應用程序案例:新浪微博,Google地圖,開心網等等

2.我們需要jquery文件,可以去官網下載,我是用的是jquery-3.3.1,我們在exercise裏面創建一個static的文件夾,接着又在裏面創建以js的文件夾把我們的jquery-3.3.1放進去


3.接着我們需要在setting.py裏面添加我們的ststic文件進行 配置


4.接着我們運行項目在瀏覽器地址欄輸入

http://127.0.0.1:8000/static/js/jquery-3.3.1.min.js結果爲


說明我們可以使用jquery文件了

5.我們在register.html中加上javascript

JSON基礎結構:

       JSON結構有兩種結構:

       json簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種複雜的結構。

對象:對象在js中表示爲“{}”括起來的內容,數據結構爲 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key爲對象的屬性,value爲對應的屬性值,所以很容易理解,取值方法爲 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。

數組:數組在js中是中括號“[]”括起來的內容,數據結構爲 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/static/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("input[name='username']").blur(function () {
                //通過彈框來驗證代碼是否成功 alert(username) 丟失光標瀏覽器彈框
                var username=$("this").val();
                //通過彈框驗證alert(token) 丟失光標彈框 name的key從瀏覽器代碼工作區中查找
                var token=$("input[name='csrfmiddlewaretoken']").val();
                //django 中每一個表單請求都需要一個key
                //接下來將請求發送到後臺
                //格式  (1.請求路徑 2.參數 3.回調函數(返回後執行函數))
                //json格式
                data={"uername":username,"csrfmiddlewaretoken":token};
                $.post('hasName',data,function(bdata){
                    //標籤中添加文字
                    $("#msg").html(bdata);

                })

            });

        })
    </script>
</head>
<body>
<form method="post" action="/user/register">
    {% csrf_token %}
    <p>
        {{ error }}
    </p>
    <p>
        用戶名:<input value="{{blog.userName}}" type="text" name="username"><span id="msg"></span>
    </p>
    <p>
        密碼:<input type="password" name="upw">
    </p>
    <p>
        <input type="submit" value="註冊">
    </p>
</form>
</body>
</html>

6.在這寫完之前我們需要在views.py定義一個hasName(),同時需要導入HttpResponse模塊,用來判斷用戶名有沒有重複,同時在頁面中顯示提示信息


7.然後我們在blog_user\urls.py配置一下路徑

 
#usr/bin/python
#-*-coding:utf-8-*-

from django.urls import path
from zhaofan_user import views
app_name='user'
urlpatterns = [
    path('register',views.register),
    path('welcome/<int:id>/',views.welcome,name='welcome'),
    path('hasName',views.hasName),
    
]

最後進入瀏覽器輸入已有的姓名不點擊提交顯示


可以再審覈代碼network區域查看運行

輸入沒有的姓名不點擊提交顯示


二、登錄功能

如果用戶已經註冊過賬號,那麼就需要一個超鏈接轉到登錄頁面進行登錄,用戶名密碼正確進入歡迎界面,如果用戶名密碼錯誤,報出錯誤重新登錄

1.我們先在templates文件下的user中創建登錄頁面的html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post" action="/user/login">
        {% csrf_token %}
        用戶名:<input type="text" name="uname"><span>{{ error }}</span><br>
        密 碼:<input type="password" name="upwd"><br>
        <input type="submit" value="登錄">
    </form>
</body>
</html>

2.接着在views.py中創建登錄的函數login()

 
#登錄
def login(request):
    #接收到get請求進入登錄頁面
    if request.method == 'GET':
        return render(request, 'user/login.html', {})
    #點擊登陸後接收到post請求
    elif request.method == 'POST':
        unname=request.POST.get('uname')
        upwd=request.POST.get('upwd')
        bloguser = BlogUser.objects.filter(userName=unname,passWord=upwd)
        #過濾數據庫名字得到結果集 如果結果集長度用戶名密碼正確進入歡迎頁面返回用戶名id獲取用戶名
        if len(bloguser) == 1:
            return redirect(reverse('user:welcome',args=[bloguser[0].id]))
        #過濾數據庫如果沒有結果再一次進入登錄界面 並顯示用戶名或密碼錯誤
        else:
            return render(request,'user/login.html',{"error":"用戶名或密碼錯誤"})

3.接着在在blog_user\urls.py配置路徑

 
# usr/bin/python
# -*-coding:utf-8-*-
from django.urls import path
from blog_user import views

app_name = 'user'
urlpatterns = [
    path('register', views.register),
    path('welcome/<int:id>/', views.welcome, name='welcome'),
    path('hasName',views.hasName),
    path('login',views.login),
]

4.進入瀏覽器頁面


點擊已有賬戶登錄


輸入正確密碼


輸入錯誤密碼



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章