zoukankan      html  css  js  c++  java
  • Django: 项目实战从0开始---实现登录注册系统。(1)

    环境:python3.7 +Django2.2

    此项目是转载于https://www.liujiangblog.com/course/django/此大神的博客,为了自己练习,熟悉自己的python技术。

    再此项目中,一直会优化原来写的代码,逐渐进步。

    一、搭建项目环境

    1、打开pycharm,新建项目

    • 在Location处选择工程目录
    • 在New environment using处选择Virtualenv(这可能需要你提前pip install virtualenv进行虚拟工具virtualenv的安装)。通常情况下,虚拟环境会以venv的名字,自动在工程目录下生成。
    • 在Base interpreter处,选择你要使用的Python解释器
    • 下面两个单选框,根据需要自行选择
    • 如果想使用现成的解释器或者虚拟环境,请选择Existing interpreter
    • 注意:app应用我们就不注册了,系统帮我们已经注册好了。

    (2)设置语言和时区

    修改setings.py

    LANGUAGE_CODE = 'zh-hans'     # 这里修改了
    
    TIME_ZONE = 'Asia/Shanghai'    # 这里修改了
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = False    # 这里修改了

    (3)启动开发服务器

    默认主机HOST为127.0.0.1,Port:8000

     

     也可以在运行的时候修改端口,也可以在pycharm 里面设置 Run/Debug Configurations自己修改自定义的

     

     (3)登录127.0.0.1:8000 

     二、设计数据模型

    用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了。模型中定义了数据如何在数据库内保存,也就是数据表的定义方式。这部分工作体现在Django的代码中,其实就是model类的设计。

    (1)数据库模型设计

    作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息。很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息:

    • 用户名
    • 密码
    • 邮箱地址
    • 性别
    • 创建时间

    我们现在就暂定保存这些信息吧,更多的内容,请大家在实际项目中自行添加。

    进入login/models.py文件,这里将是我们整个login应用中所有模型的存放地点,代码如下

    from django.db import models
    
    # Create your models here.
    
    
    class User(models.Model):
    
        gender = (
            ('male', ""),
            ('female', ""),
        )
    
        name = models.CharField(max_length=128, unique=True)
        password = models.CharField(max_length=256)
        email = models.EmailField(unique=True)
        sex = models.CharField(max_length=32, choices=gender, default="")
        c_time = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return self.name
    
        class Meta:
            ordering = ["-c_time"]
            verbose_name = "用户"
            verbose_name_plural = "用户"
    modles.py

    各字段含义:

    • name: 必填,最长不超过128个字符,并且唯一,也就是不能有相同姓名;
    • password: 必填,最长不超过256个字符(实际可能不需要这么长);
    • email: 使用Django内置的邮箱类型,并且唯一;
    • sex: 性别,使用了一个choice,只能选择男或者女,默认为男;
    • 使用__str__方法帮助人性化显示对象信息;
    • 元数据里定义用户按创建时间的反序排列,也就是最近的最先显示;

    注意:这里的用户名指的是网络上注册的用户名,不要等同于现实中的真实姓名,所以采用了唯一机制。如果是现实中的人名,那是可以重复的,肯定是不能设置unique的。另外关于密码,建议至少128位长度,原因后面解释。

    (2)设置数据库后台

    定义好了模型后,就必须选择我们用来保存数据的数据库系统。Django支持Mysql,SQLite,Oracle等等。

    Django中对数据库的设置在settings文件中,如下部分:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

    关于数据库的操作和设置数据库为mysql,可以参考我此条博客https://www.cnblogs.com/sunjinchao/articles/12064393.html

    Django默认使用SQLite数据库,并内置SQLite数据库的访问API,也就是说和Python一样原生支持SQLite。本项目使用SQLite作为后端数据库,因此不需要修改settings中这部分内容。如果你想要使用别的数据库,请自行修改该部分设置。

    (3)创建记录和数据表

    python manage.py makemigrations
    #######################################

    (venv) C:UsersmzyPycharmProjectsmysite>python manage.py makemigrations
    Migrations for 'login':
    loginmigrations001_initial.py
    - Create model User

    ###################################################

    python manage.py migrate

    ##################################################

    (venv) C:UsersmzyPycharmProjectsmysite>python manage.py migrate
    Operations to perform:
    Apply all migrations: admin, auth, contenttypes, login, sessions
    Running migrations:
    Applying contenttypes.0001_initial... OK
    Applying auth.0001_initial... OK
    Applying admin.0001_initial... OK
    Applying admin.0002_logentry_remove_auto_add... OK
    Applying admin.0003_logentry_add_action_flag_choices... OK
    Applying contenttypes.0002_remove_content_type_name... OK
    Applying auth.0002_alter_permission_name_max_length... OK

    
    

    ts... OK
    Applying auth.0005_alter_user_last_login_null... OK
    Applying auth.0006_require_contenttypes_0002... OK
    Applying auth.0007_alter_validators_add_error_messages... OK
    Applying auth.0008_alter_user_username_max_length... OK
    Applying auth.0009_alter_user_last_name_max_length... OK
    Applying auth.0010_alter_group_name_max_length... OK
    Applying auth.0011_update_proxy_permissions... OK
    Applying login.0001_initial... OK
    Applying sessions.0001_initial... OK

     
  • 相关阅读:
    关于嵌入式的技术竞争力
    CentOS7使用ISO镜像文件作为离线Yum源
    CentOS7搭建NAS文件共享存储
    CentOS7安装redis5.0.6
    Windows 10 2004及以后版本删除更新历史记录
    CentOS7手动安装MySQL 8
    python 使用lambda对dict排序
    单片机驱动-软件模拟I2C
    Linux-通过网络nfs和tftp在开发板上运行linux驱动程序
    体验一个前端视图层的mvvm的框架Knockoutjs(双向绑定,模板..)..解放您的双手,不再些那么多的dom操作..快速实现视图层数据与UI的交互处理
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/12894927.html
Copyright © 2011-2022 走看看