国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django實戰(zhàn)項目-學(xué)習(xí)任務(wù)系統(tǒng)-用戶注冊

這篇具有很好參考價值的文章主要介紹了Django實戰(zhàn)項目-學(xué)習(xí)任務(wù)系統(tǒng)-用戶注冊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

接著上期代碼框架,開發(fā)第2個功能,用戶注冊,在原有用戶模型基礎(chǔ)上,增加一個學(xué)生用戶屬性表,用來關(guān)聯(lián)學(xué)生用戶的各種屬性值,這個屬性表是參考網(wǎng)絡(luò)小說里系統(tǒng)屬性值設(shè)計的,方便直觀了解用戶的能力高低,等級以及積分值等信息。

第一步:編寫第二個功能-用戶注冊

1,編輯模型文件:

./mysite/study_system/models.py:

class StudyUserAttribute(models.Model):
    user = models.OneToOneField(StudyUser, on_delete=models.CASCADE, primary_key=True, verbose_name='用戶屬性ID')
    study_level = models.IntegerField(verbose_name='學(xué)習(xí)級別: 1-小學(xué),2-初中,3-高中,4-本科,5-碩士,6-博士,7-博士后')
    intelligence = models.IntegerField(verbose_name='智力')
    memory = models.IntegerField(verbose_name='記憶力')
    diligence = models.IntegerField(verbose_name='勤奮力')
    physical_fitness = models.IntegerField(verbose_name='體能')
    total_points = models.IntegerField(verbose_name='總積分')
    other_subjects = models.CharField(max_length=100, verbose_name='其他學(xué)科屬性')
    notes = models.TextField(verbose_name='備注')
    update_time = models.DateTimeField(verbose_name='更新時間')

    class Meta:
        verbose_name = '學(xué)生用戶屬性表'
        verbose_name_plural = '學(xué)生用戶屬性表'
        # 用于模型的數(shù)據(jù)庫表的名稱
        db_table = "study_user_attributes"

    def __str__(self):
        return str(self.user)

2,編輯urls配置文件:
./mysite/study_system/urls.py

urlpatterns = [
    # 登錄首頁url
    path('', views.index, name='index'),
    path('login/', LoginView.as_view(), name='login'),
    # 登錄主頁url
    path('home/', views.home, name='home'),
    # 注冊url
    path('register/', views.register, name='register'),
]

3,編輯視圖文件:
./mysite/study_system/views.py

def register(request):
    '''
    @方法名稱: ajax請求, 表單視圖,注冊用戶
    @作    者: PandaCode輝
    @weixin公眾號: PandaCode輝
    @創(chuàng)建時間: 2023-10-10
    '''
    # 初始化響應(yīng)容器
    rsp_dict = {"result": "error", "errorMsg": "系統(tǒng)錯誤"}
    # 是否ajax請求
    if request.is_ajax():
        try:
            rest = request.POST
            # 角色:1: 系統(tǒng)管理員;2: 輔導(dǎo)員;3: 學(xué)生;4-自導(dǎo)自學(xué)
            role = rest['role']
            username = rest['username']
            password = rest['password']
            email = rest['email']
            # print('email : '+str(email))
            # 根據(jù)郵箱查詢校驗賬號是否存在
            exists = StudyUser.is_email_exists(email)
            # print('exists : '+str(exists))
            if exists:
                # 用戶注冊校驗失敗,顯示錯誤信息
                rsp_dict["errorMsg"] = "該郵箱已經(jīng)存在注冊用戶,不能重復(fù)注冊."
                # 錯誤返回json數(shù)據(jù)格式
                return JsonResponse(rsp_dict)
            # 手機號初始為空
            phone_num = ""
            # 輔導(dǎo)員用戶ID,學(xué)生用戶必輸
            parent_id = 0
            # 今天
            # UTC格式當(dāng)前時區(qū)時間
            t = time.localtime()
            work_date = time.strftime("%Y-%m-%d %H:%M:%S", t)
            print('當(dāng)前日期時間:' + str(work_date))
            # 3: 學(xué)生,需要關(guān)聯(lián)對應(yīng)輔導(dǎo)員賬號
            if role == '3':
                # 根據(jù)輔導(dǎo)員郵箱查詢輔導(dǎo)員的用戶信息
                parent_email = rest['parent_email']
                parent_user = StudyUser.get_user_by_email(parent_email)
                # print('parent_user : '+str(parent_user))
                if parent_user:
                    # 找到了與郵箱匹配的用戶,訪問用戶的屬性,輔導(dǎo)員用戶ID
                    parent_id = parent_user.user_id
                else:
                    # 沒有找到與郵箱匹配的用戶,執(zhí)行相應(yīng)的邏輯
                    # 用戶注冊校驗失敗,顯示錯誤信息
                    rsp_dict["errorMsg"] = "沒有找到與輔導(dǎo)員郵箱匹配的用戶,注冊失敗."
                    # 錯誤返回json數(shù)據(jù)格式
                    return JsonResponse(rsp_dict)

            # 創(chuàng)建用戶對象并保存到數(shù)據(jù)庫
            user = StudyUser(role=role, username=username, password=password,
                             email=email, phone_num=phone_num, parent_id=parent_id,
                             created_time=work_date, update_time=work_date)
            # 保存用戶表數(shù)據(jù)
            user.save()
            # 3: 學(xué)生;4-自導(dǎo)自學(xué)'。增加屬性表數(shù)據(jù)
            if role in ('3', '4'):
                # 創(chuàng)建用戶對象并保存到數(shù)據(jù)庫,首次注冊,所有屬性值初始化為0或空
                userAttribute = StudyUserAttribute(user=user, study_level=1, intelligence=0, memory=0,
                                                   diligence=0, physical_fitness=0,
                                                   total_points=0, other_subjects="",
                                                   notes="", update_time=work_date)
                # 保存屬性表數(shù)據(jù)
                userAttribute.save()
            # 注冊成功
            rsp_dict["result"] = "success"
            rsp_dict["errorMsg"] = "注冊成功,請登錄."
            # 成功返回json數(shù)據(jù)格式
            return JsonResponse(rsp_dict)
        except Exception as e:
            rsp_dict["errorMsg"] = "注冊用戶失敗."
            # 錯誤返回json數(shù)據(jù)格式
            return JsonResponse(rsp_dict)
    else:
        # 跳轉(zhuǎn)到注冊頁面
        return render(request, "study_system/register.html", rsp_dict)

4,編輯頁面模板代碼:

4.1. 用戶注冊頁面
./mysite/study_system/templates/study_system/register.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>study system</title>
    <link rel="stylesheet" href="/static/study_system/bootstrap3/css/bootstrap.min.css">
    <script type="text/javascript" src="/static/study_system/jquery1.3.3/jquery.min.js"></script>
    <style>
        .container {
            max-width: 400px;
            margin: 0 auto;
            padding-top: 100px;
        }
    </style>

    <script type="text/javascript">

        /* 自動載入 */
        $(function () {
            // 清空輸入欄
            clean_input();
        });

        // 清空輸入欄
        function clean_input() {
            $("#username").val("");
            $("#password").val("");
            $("#email").val("");
            $("#parent_email").val("");
        }

        // 學(xué)習(xí)模式切換不同角色選擇
        function change_study_type() {
            var study_type = $("select[name='study_type']").val();
            {#alert(study_type);#}
            var optionHtml = "";
            if (study_type == '1') {
                optionHtml += "<option value='4'>自導(dǎo)自學(xué)</option>";
            } else {
                optionHtml += "<option value='2'>輔導(dǎo)員</option>";
                optionHtml += "<option value='3'>學(xué)生</option>";
            }
            {## 清空子元素#}
            $("select[name='role']").empty();
            // 添加到class=中
            $("select[name='role']").append(optionHtml);

            // 角色切換,顯示,隱藏關(guān)聯(lián)郵箱輸入框
            change_role();
            // 清空輸入欄
            clean_input();
        }

        // 角色切換,顯示,隱藏關(guān)聯(lián)郵箱輸入框
        function change_role() {
            var role = $("select[name='role']").val();
            {#alert(role);#}
            if (role === '3') {
                $('#parent-email-group').show();
            } else {
                $('#parent-email-group').hide();
            }
        }

        //驗證,用戶名
        function check_username() {
            if ($("#username").val() == "") {
                alert("用戶名,不能為空");
                return false;
            }
            return true;
        }

        //驗證,密碼
        function check_password() {
            if ($("#password").val() == "") {
                alert("密碼,不能為空");
                return false;
            }
            return true;
        }

        //驗證,郵箱
        function check_email() {
            if ($("#email").val() == "") {
                alert("郵箱,不能為空");
                return false;
            }
            return true;
        }

        //提交表單
        function submitRegister() {
            if (check_username() && check_password() && check_email()) {

                var role = $("#role").val();
                var username = $("#username").val();
                var password = $("#password").val();
                var email = $("#email").val();
                var parent_email = "";
                if (role == "3") {
                    parent_email = $("#parent_email").val();
                }
                //alert("parent_email:" + parent_email);
                // 1,獲取csrfmiddlewaretoken的input標(biāo)簽value屬性對應(yīng)的值
                {#var token = $('[name="csrfmiddlewaretoken"]').val();#}
                // 2,直接就能得到 csrfmiddlewaretoken 的input標(biāo)簽value屬性的值
                var csrf_token = '{{ csrf_token }}';

                $.post("/study_system/register/",
                    {
                        'role': role,
                        'username': username,
                        'password': password,
                        'email': email,
                        'parent_email': parent_email,
                        // 將token值放到請求數(shù)據(jù)部分,token的鍵必須是 csrfmiddlewaretoken
                        'csrfmiddlewaretoken': csrf_token,
                    }, function (data) {
                        if ("success" == data.result) {
                            alert("注冊成功");
                            // 注冊成功,去登錄頁面
                            window.location.href = "/study_system/login/";
                        } else {
                            alert("注冊失敗:" + data.errorMsg);
                        }
                    });
            }
        }

    </script>
</head>
<body>
<div class="container">
    <h2 class="text-center">注冊用戶</h2>
    <form method="post" action="{% url 'study_system:register' %}">
        {# 在Django中提交數(shù)據(jù)到后端服務(wù)的時候,為了安全,要使用CSRF(跨站請求偽造)。#}
        {% csrf_token %}
        <div class="form-group">
            <label for="study_type">學(xué)習(xí)模式</label>
            <select class="form-control" id="study_type" name="study_type" onchange="change_study_type()">
                <option value="1" selected="selected">單人模式</option>
                <option value="2">雙人模式</option>
            </select>
        </div>
        <div class="form-group">
            <label for="role">角色類型</label>
            <select class="form-control" id="role" name="role" onchange="change_role()">
                {#                <option value="2">輔導(dǎo)員</option>#}
                {#                <option value="3">學(xué)生</option>#}
                <option value="4" selected="selected">自導(dǎo)自學(xué)</option>
            </select>
        </div>

        <div class="form-group">
            <label for="username">用戶名</label>
            <input type="text" class="form-control" id="username" name="username">
        </div>
        <div class="form-group">
            <label for="password">密碼</label>
            <input type="password" class="form-control" id="password" name="password">
        </div>
        <div class="form-group">
            <label for="email">郵箱</label>
            <input type="email" class="form-control" id="email" name="email">
        </div>
        <div id="parent-email-group" class="form-group" style="display: none;">
            <label for="parent_email">關(guān)聯(lián)輔導(dǎo)員郵箱</label>
            <input type="email" class="form-control" id="parent_email" name="parent_email">
        </div>
        <div class="form-group">
            <button type="button" onclick="submitRegister()" class="form-control btn-primary">注冊賬戶</button>
        </div>
        <div class="form-group">
            <button type="reset" class="form-control btn-primary" onclick="clearErrorMessage()">重置</button>
        </div>
        <div class="form-group">
            <a href="{% url 'study_system:login' %}" class="form-control btn-link text-right">登錄賬戶</a>
        </div>
    </form>
</div>
</body>
</html>

第二步:運行測試-用戶注冊功能

1,雙人模式

1.1,先注冊一個輔導(dǎo)員用戶

  作為老師/輔導(dǎo)員/家長等角色,用來發(fā)布任務(wù),配置定時任務(wù),維護兌換物品,發(fā)放獎勵物品等,監(jiān)督管理學(xué)生作用,因為沒有真正的智能系統(tǒng),需要人工監(jiān)管學(xué)生的行為規(guī)范,督促學(xué)生完成學(xué)習(xí)任務(wù),一個輔導(dǎo)員可以關(guān)聯(lián)多個學(xué)生用戶。

Django實戰(zhàn)項目-學(xué)習(xí)任務(wù)系統(tǒng)-用戶注冊,Python,django,python

1.2,再注冊一個學(xué)生用戶

  作為學(xué)生角色,用來接收對應(yīng)輔導(dǎo)員和系統(tǒng)發(fā)布的任務(wù),完成任務(wù),獲取積分,兌換物品,扣除積分,擁有屬性表值等,學(xué)生用戶必須綁定關(guān)聯(lián)一個輔導(dǎo)員用戶。

Django實戰(zhàn)項目-學(xué)習(xí)任務(wù)系統(tǒng)-用戶注冊,Python,django,python

1,單人模式

  自己發(fā)布任務(wù)給自己,自己學(xué)習(xí)完成任務(wù),自己維護兌換物品,自己兌換獎勵物品,沒有其他人監(jiān)督管理,該模式需要較強的自學(xué)能力。

Django實戰(zhàn)項目-學(xué)習(xí)任務(wù)系統(tǒng)-用戶注冊,Python,django,python

-------------------------------------------------end -------------------------------------------------文章來源地址http://www.zghlxwxcb.cn/news/detail-725525.html

到了這里,關(guān)于Django實戰(zhàn)項目-學(xué)習(xí)任務(wù)系統(tǒng)-用戶注冊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包