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('上傳失敗')
大體流程就是那樣