天天生鮮Django項目——①項目建立及前期步驟


 

b站視頻連接:https://www.bilibili.com/video/av41733850/

 

視頻所用django1.8版本,但本人使用django2.2,故寫下這篇文章記錄所遇錯誤及步驟。

虛擬環境建立:mkvirtualenv 虛擬環境名

#虛擬環境一般自動生成在C:\Users\電腦用戶名\Envs目錄中,如需自定義設置詳情看此篇文章:https://blog.csdn.net/godot06/article/details/81079064

整體機構:

創建項目:django-admin startproject  項目名

創建每個項目中的模塊:python manage.py startapp  名稱

設置settings文件:修改所需要的數據庫 靜態文件目錄  模板目錄

 1 # BASE_DIR絕對路徑
 2 sys.path.insert(0,os.path.join(BASE_DIR,'apps/'))
 3 ......
 4 
 5 
 6 INSTALLED_APPS = [
 7     'django.contrib.admin',
 8     'django.contrib.auth',
 9     'django.contrib.contenttypes',
10     'django.contrib.sessions',
11     'django.contrib.messages',
12     'django.contrib.staticfiles',
13     'apps.user',   #用戶模板
14     'apps.goods',  #商品模板
15     'apps.cart',   #購物車模板
16     'apps.order',  #訂單模板
17     'tinymce',  #富文本編輯器
18 ]
19 .......
20 
21 
22 TEMPLATES = [
23     {
24         'BACKEND': 'django.template.backends.django.DjangoTemplates',
25         'DIRS': [os.path.join(BASE_DIR,'templates')],
26         'APP_DIRS': True,
27         'OPTIONS': {
28             'context_processors': [
29                 'django.template.context_processors.debug',
30                 'django.template.context_processors.request',
31                 'django.contrib.auth.context_processors.auth',
32                 'django.contrib.messages.context_processors.messages',
33             ],
34         },
35     },
36 ]
37 .....
38 DATABASES = {
39     'default': {
40         'ENGINE': 'django.db.backends.mysql',
41         'NAME': '數據庫名',
42         'USER':'用戶名',
43         'PASSWORD':'密碼',
44         'HOST':'id地址',
45         'PORT':3306,
46     }
47 }
48 ........
49 
50 
51 
52 # django認證系統使用的模型類
53 AUTH_USER_MODEL = "user.User"
54 .......
55 
56 
57 STATIC_URL = '/static/'
58 # 靜態目錄
59 STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
60 
61 # 富文本編輯器配置
62 TINYMCE_DEFAULT_CONFIG = {
63     'theme': 'advanced',
64     'width': 600,
65     'height': 400,
66 }

數據庫遠程連接需要設置,詳情看這幾篇文章:

https://blog.csdn.net/qq_36242487/article/details/79813582

https://www.cnblogs.com/renshaoqi/p/10508832.html

配置項目urls,各個模塊urls,需加上app_name,例如:

from django.urls import path,re_path
from apps.goods import views
app_name='goods'
urlpatterns = [
    path(),

]

基礎配置完成,即可開始編寫代碼

 

編寫models模型類

需要注意的是django2.0以后需要在定義外鍵on_delete=需要寫上,不再是默認參數。

apps/user/models:

from django.db import models
from django.contrib.auth.models import AbstractUser
from db.base_model import BaseModel
# Create your models here.


class User(AbstractUser, BaseModel):
    '''用戶模型類'''

    class Meta:
        db_table = 'df_user'
        verbose_name = '用戶'
        # 指定模型的復數形式是什么,如果不指定Django會自動在模型名稱后加一個’s’
        verbose_name_plural = verbose_name


class Address(BaseModel):
    '''地址模型類'''
    user = models.ForeignKey('User', verbose_name='所屬賬戶',on_delete=models.CASCADE)
    receiver = models.CharField(max_length=20, verbose_name='收件人')
    addr = models.CharField(max_length=256, verbose_name='收件地址')
    zip_code = models.CharField(max_length=6, null=True, verbose_name='郵政編碼')
    phone = models.CharField(max_length=11, verbose_name='聯系電話')
    is_default = models.BooleanField(default=False, verbose_name='是否默認')

    class Meta:
        db_table = 'df_address'
        verbose_name = '地址'
        verbose_name_plural = verbose_name

 

編寫views視圖

apps/user/views

 1 from django.shortcuts import render,redirect
 2 from django.urls import reverse           #from django.core.urlresolvers import reverse:Django更新到2.0后,django2.0 把原來的 django.core.urlresolvers 包 更改為了 django.urls包
 3 
 4 
 5 
 6 from apps.user.models import User
 7 import re
 8 # Create your views here.
 9 
10 
11 #/user/register
12 def register(request):
13     '''注冊頁面'''
14     if request.method == "GET":
15         #顯示注冊頁面
16         return render(request,'register.html')
17     else:
18         '''進行注冊的處理'''
19         # 接收數據
20         username = request.POST.get('user_name')
21         password = request.POST.get('pwd')
22         email = request.POST.get('email')
23         allow = request.POST.get('allow')
24         # 進行數據校驗
25         # all()方法:可迭代的元素
26         if not all([username, password, email]):
27             # 數據不完整
28             return render(request, 'register.html', {'errmas': '數據不完整'})
29         # 校驗郵箱
30         # if not re.match(r'^[a-z0-9][\w.\-]@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',email):
31         if not re.match(r'^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
32             return render(request, 'register.html', {'errmsg': "郵箱格式不正確"})
33         if allow != 'on':
34             return render(request, 'register.html', {'errmsg': '請同意協議'})
35         # 進行業務處理:進行用戶注冊{不同業務有着不同的處理}
36         user = User.objects.create_user(username, password, email)
37         user.is_active = 0
38         user.save()
39         # 返回應答,跳轉首頁
40         return redirect(reverse('goods:index'))

 

所遇錯誤無非連接數據庫、配置文件不同、編寫模型類幾種,以上均已解決。

只是解決問題,但其本質還未明白,希望大家互相探討、答疑解惑。


免責聲明!

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



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