django建立項目流程

Dajngo項目流程前端

1. 建立項目python

Django-admin startproject 項目名mysql

2. cd 項目  建立子應用sql

Python manage.py startapp 子項目名數據庫

3. 把項目添加到編輯器django

4. 進入主項目的setting.py文件配置後端

(1)     INSTALLED_APPS裏面添加子項目的名字跨域

(2)     MIDDLEWARE把這裏面的跨域請求註釋掉app

(3)     TEMPLATES—>'DIRS': [os.path.join(BASE_DIR,'templates')],編輯器

(4)     想用mysql先建立個數據庫

而後配置 記得改數據庫名稱 和密碼

DATABASES = {

'default': {

#鏈接mysql

'ENGINE': 'django.db.backends.mysql',

#數據庫名稱

'NAME': 's2',

#數據庫用戶

'USER':'root',

#密碼

'PASSWORD':'mysql',

#ip 不填默認localhost

'HOST':'',

#端口 不填 默認就是3306

'PORT':'',

#數據庫配置

#自動提交

'OPTIONS':{'autocommit':True}

}

}

而後在主項目的__init__.py文件下

#導包

import pymysql

#進行初始化

pymysql.install_as_MySQLdb()

(5) 若是用sqlite3

python manage.py migrate 遷移自帶的數據庫

隨後Python manage.py createsuperuser註冊admin帳戶

 

(6)     把語言時區改了

LANGUAGE_CODE = 'zh-Hans'

 

TIME_ZONE = 'Asia/Shanghai'

 

 

(7)    添加

STATICFILES_DIRS =(

os.path.join(BASE_DIR, 'static'),

)

 

 

5. 隨後在大的項目下建立tamplate和static文件夾

6. 路由分發

7. 把主項目的urls.py複製在子項目裏面 把子項目的urls.py裏面的path('admin/', admin.site.urls),刪了  導入子項目的views文件

8. 而後看題目要求 用到的數據庫類型

(1) 一對一 數據庫外鍵類型OneToOneField(to, on_delete, parent_link=False, options)

(2) 一對多 數據庫類型

保留原數據ForeignKey(關聯表名,null=True,on_delete=models.SET_NULL)

不保留原數據ForeignKey(關聯表名,null=True,on_delete=models.CASCADE)

(3) 多對多 數據類型.ManyToManyField(關聯表名)

(4) Mysql數據庫的話 後面跟上這個  在mysql數據庫下能看到你建的表名 不跟也行

class Meta:

db_table = 'user'

(5) Sqlite3 跟上這個 在admin後臺能看只管的看到你用的啥表

class Meta:

verbose_name_plural = '自定義的表名'

def __str__(self):

return self.name

而後再子項目的admin.py裏面導入你的models.py文件

From 子項目名 import models

 

admin.site.register(models.表名)

9. 表建好以後在template文件夾下寫模板  記住幾點

(1) form表單提交要在form標籤裏面寫上action 裏面是你要提交的路徑 method是你以POST仍是GET方式提交 若是用到上傳圖片寫enctype="multipart/form-data"而後要寫name值以後傳到後端獲取數據的時候要用到 記得寫上一個提交按鈕

10. 在子項目的views.py文件下寫後端代碼(接口)

(1) 導模塊

from django.shortcuts import render,redirect,reverse

from django.http import HttpResponse

from myapp.models import * 這個是數據庫模塊

(2) 起名字的時候最好首字母大寫 標準規範

(3) 以後就是寫接口  記得一個接口一個路由

(4) 獲取前臺的name值

Request.PSOT/GET.get(前端的name值)

獲取圖片

fp=Request.FILES.get(前端的name值)(記得要在static裏面建一個img文件夾)

獲取圖片的時候要 導包

from 主項目.settings import STATICFILES_DIRS

import os

import hashlib

import time

Md5加密

def get_md5(str_):

m = hashlib.md5()

m.update(str_.encode())

return m.hexdigest()

 

 

在普通視圖下寫時間 把時間加在md5加密下面

 

now = time.time()

file_name = get_md5(str(now))

 

以後判斷

fp=Request.FILES.get(前端的name值)(記得要在static裏面建一個img文件夾)

 

if fp:

houzhui = fp.name.split(".")[-1]

path = os.path.join(STATICFILES_DIRS[0], 'img/' + file_name + '.' + houzhui)

if fp.multiple_chunks():

file_yield = fp.chunks()

with open(path, 'wb') as f:

for buf in file_yield:

f.write(buf)

else:

print('大文件上傳完畢')

else:

with open(path, 'wb') as f:

f.write(fp.read())

print('小文件上傳完畢')

Shop.objects.create(user=res1,name=name,price=price,picture=('img/' + file_name + '.' + houzhui))

return redirect(reverse('zhanshi'))

else:

return HttpResponse('上傳失敗')

 

 

 

大體流程就是那樣

相關文章
相關標籤/搜索