zoukankan      html  css  js  c++  java
  • django创建项目流程

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

    大致流程就是那样


     

     

  • 相关阅读:

    list集合
    接口
    抽取对象的基本方法
    访问修饰符
    构造方法
    如何弹出一个对话框
    nginx反代配置
    TreeMap排序
    BeanPropertyRowMapper
  • 原文地址:https://www.cnblogs.com/bo686/p/10764973.html
Copyright © 2011-2022 走看看