博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django创建项目流程
阅读量:5050 次
发布时间:2019-06-12

本文共 2845 字,大约阅读时间需要 9 分钟。

Dajngo项目流程

1. 创建项目

Django-admin startproject 项目名

2. cd 项目  创建子应用

Python manage.py startapp 子项目名

3. 把项目添加到编辑器

4. 进入主项目的setting.py文件配置

(1)     INSTALLED_APPS里面添加子项目的名字

(2)     MIDDLEWARE把这里面的跨域请求注释掉

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

 

 

 

大致流程就是那样

 

 

 

转载于:https://www.cnblogs.com/bo686/p/10764973.html

你可能感兴趣的文章
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
mysql忘记root密码
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&&打表)
查看>>
JSON、JSONP、Ajax的区别
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>