基于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,后面没来及改造
在这里插入图片描述
错误提示:
在这里插入图片描述

发布了26 篇原创文章 · 获赞 8 · 访问量 7812

猜你喜欢

转载自blog.csdn.net/qq_35289736/article/details/103926236
今日推荐