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:\Users\mzy\PycharmProjects\mysite>python manage.py makemigrations
Migrations for 'login':
login\migrations\0001_initial.py
- Create model User

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

python manage.py migrate

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

(venv) C:\Users\mzy\PycharmProjects\mysite>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

 

 

posted on 2020-05-15 15:13  超nmmmmm  阅读(874)  评论(0编辑  收藏  举报

导航