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('上传失败')

 

 

 

大体流程就是那样

相关文章
相关标签/搜索