基於Django的教育培訓CRM系統(二):登錄與註冊

起步

完成Django項目的基礎設置,在項目根目錄下建立一個static的目錄,用於存放js,css,圖片等網頁渲染所需靜態文件
在這裏插入圖片描述
進入setting,設置數據庫,文件路徑等配置信息:

   
DATABASES = {
    """
    數據庫配置
    """
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 連接數據庫的類型
        'NAME': 'Winston_crm', # 數據庫名
        'HOST': 'xxxxxxxx', # 主機地址
        'PORT': 3306, # 端口號
        'USER': 'xxxx',  # 登錄用戶
        'PASSWORD': 'xxxxxxx', # 登錄密碼
    }
}
    """
    設置static文件路徑
    """
STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]
    """
    在model中改寫Django中user表所需路徑設置
    """
AUTH_USER_MODEL = 'crm.UserProfile'

初始化數據庫,在控制檯執行以下命令:
在這裏插入圖片描述

python manage.py makemigrations  //記錄表變更

python manage.py migrate  //提交表變更

url設置

進入url.py文件,設置url分發路由,以及導入視圖處理函數:
在這裏插入圖片描述

改造登錄頁面

這裏主要涉及到前端框架的使用,打開Bootstrap或jQuery資源庫,憑個人喜好,尋找一個好看的頁面移植改造,或自行設計:
在這裏插入圖片描述
把頁面需導入的css,js,圖片等放入static目錄下,把HTML頁面放到templates目錄下
在這裏插入圖片描述

處理login的視圖函數

在這裏插入圖片描述
對應的login.html文件:
在這裏插入圖片描述
提示用戶名或密碼爲空:
在這裏插入圖片描述
密碼或用戶名錯誤,登錄失敗:
在這裏插入圖片描述

處理註冊的視圖函數

打開form.py文件
在這裏插入圖片描述
繼承使用Django自帶的form表單進行處理

# 註冊form
class RegForm(BaseForm):
    password = forms.CharField(
        label='密碼',
        widget=forms.widgets.PasswordInput(),
        min_length=6,
        error_messages={'min_length': '最小長度爲6',
                        'required': '密碼不能爲空'}
    )
    re_password = forms.CharField(
        label='確認密碼',
        widget=forms.widgets.PasswordInput(),
        error_messages={'required': '密碼不能爲空'}
    )

    class Meta:
        model = models.UserProfile
        fields = '__all__'  # 所有字段
        fields = ['username', 'password', 're_password', 'name', 'department']  # 指定字段
        widgets = {
            'username': forms.widgets.EmailInput(attrs={'class': 'form-control'}),
            'password': forms.widgets.PasswordInput,
        }
        labels = {
            'username': '用戶名',
            'password': '密碼',
            'name': '姓名',
            'department': '部門',
        }

        error_messages = {
            'username': {
                'required': '密碼不能爲空'
            },
            'name': {
                'required': '姓名不能爲空'
            },
            'department': {
                'required': '部門不能爲空'
            }
        }

    def clean(self):
        pwd = self.cleaned_data.get('password')
        re_pwd = self.cleaned_data.get('re_password')
        if pwd == re_pwd:
            return self.cleaned_data
        self.add_error('re_password', '兩次密碼不一致')
        raise ValidationError('兩次密碼不一致')

在視圖函數中導入RegForm創建對象,並進行驗證反饋:
在這裏插入圖片描述
找到一個好看的註冊頁面,加以改造:

<form class="form-horizontal" novalidate action="" method="post">
                <h2>註冊</h2>
                {% csrf_token %}

                <div class="form-group {% if form_obj.username.errors %}has-error{% endif %} ">

                    <label for="{{ form_obj.username.id_for_label }}"
                           class="col-sm-2 control-label"> {{ form_obj.username.label }}</label>
                    <div class="col-sm-10">
                        {{ form_obj.username }}
                        <span class="help-block">
                            {{ form_obj.username.errors.0 }}
                        </span>
                    </div>
                </div>
                <div class="form-group {% if form_obj.password.errors %}has-error{% endif %}">
                    <label for="{{ form_obj.password.id_for_label }}"
                           class="col-sm-2 control-label"> {{ form_obj.password.label }}</label>
                    <div class="col-sm-10">
                        {{ form_obj.password }}
                        <span class="help-block">
                            {{ form_obj.password.errors.0 }}
                        </span>
                    </div>
                </div>
                <div class="form-group {% if form_obj.re_password.errors %}has-error{% endif %}">
                    <label for="{{ form_obj.re_password.id_for_label }}"
                           class="col-sm-2 control-label"> {{ form_obj.re_password.label }}</label>
                    <div class="col-sm-10">
                        {{ form_obj.re_password }}
                        <span class="help-block">
                            {{ form_obj.re_password.errors.0 }}
                        </span>
                    </div>
                </div>
                <div class="form-group {% if form_obj.name.errors %}has-error{% endif %}">
                    <label for="{{ form_obj.name.id_for_label }}"
                           class="col-sm-2 control-label"> {{ form_obj.name.label }}</label>
                    <div class="col-sm-10">
                        {{ form_obj.name }}
                        <span class="help-block">
                            {{ form_obj.name.errors.0 }}
                        </span>
                    </div>
                </div>
                <div class="form-group {% if form_obj.department.errors %}has-error{% endif %}">
                    <label for="{{ form_obj.department.id_for_label }}"
                           class="col-sm-2 control-label"> {{ form_obj.department.label }}</label>
                    <div class="col-sm-10">
                        {{ form_obj.department }}
                        <span class="help-block">
                            {{ form_obj.department.errors.0 }}
                        </span>
                    </div>
                </div>


                <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <button type="submit" class="btn btn-default">Sign in</button>
                    </div>
                </div>
            </form>

感覺有點醜,emmmm,後面沒來及改造
在這裏插入圖片描述
錯誤提示:
在這裏插入圖片描述

發佈了41 篇原創文章 · 獲贊 9 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章