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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM