Django开发流程

流程目录:
  • 创建Django项目
  • 创建应用
  • 模型:
    数据库配置
    数据库表的定义
    定义模型类
    生成数据表
  • 模板
  • 视图
  • 服务器管理
  • 站点管理
具体步骤

1.创建虚拟环境:
mkvirtualenv 虚拟环境名称


2.进入虚拟环境:
workon 虚拟环境名称


3.创建Django项目:
django-admin startproject 项目名称


4.进入项目,创建应用:
python manage.py startapp booktest


5.在pycharm中打开项目
-- 数据库的配置:settings.py中DATABASES项配置

--DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'mydatabase',                你手动创建的数据库要和这个名称一样
    'USER': 'mydatabaseuser',
    'PASSWORD': 'mypassword',
    'HOST': '127.0.0.1',             (本地:这里填localhost也可以)
    'PORT': '3306',
    }
NAME: 指定的数据库名,如果是 sqlite 的话,就需要填数据库文件的绝对位置 
USER: 数据库登录的用户名,mysql 一般都是 root 
PASSWORD:登录数据库的密码,必须是 USER 用户所对应的密码
HOST: 由于一般的数据库都是 C/S 结构的,所以得指定数据库服务器的位置,我们一般数 据库服务器和客户端都是在一台主机上面,所以一般默认都填 127.0.0.1 
PORT:数据库服务器端口,mysql 默认为 3306
(HOST 和 PORT 都可以不填,使用默认的配置,但是如果你有更改默认配置的话,就需要填入更改后的 )
    -- 数据库表的定义:(需求)

    -- 定义模型类:Modle里面,引入包(from django.db import models)
               模型继承自 models.Model类

    -- 生成数据表:激活模型,编辑settings.py,在INSTALLED_APPS中添加应用

    -- TEMPLATES :  'DIRS': [os.path.join(BASE_DIR,'templates')],

6.生成迁移:

    python manage.py makemigrations  迁移文件被生成到应用的migrations

    python3 在django 项目配置文件目录下的__init__.py文件中引入:
                                import pymysql
                                pymysql.install_as_MySQLdb()
此操作,一定先手工创建自己的数据库:
                                进入数据库:mysql -uroot -p
                                创建数据库:create database 库名 charset="utf8";

7.执行迁移:
python manage.py migrate


8.可以进行下数据测试,(实现数据库中的增删改查,记得引入你对应内容):
python manage.py shell

(1)进入python shell: 
    python manage.py shell 
(2) 引入需要的包: 
    from booktest.models import BookInfo,HeroInfo 
    from django.utils import timezone  
    from datetime import * 
(3)查询所有图书信息: 
    BookInfo.objects.all() 
(4)新建图书信息: 
    b = BookInfo() 
    b.btitle="射雕英雄传" 
    b.bpub_date=datetime(year=1990,month=1,day=10) 
    b.save() 
(5)查找图书信息: 
    b=BookInfo.objects.get(pk=1) 
(6)修改图书信息: 
    b.btitle=u"天龙八部" 
    b.save() 
(7)删除图书信息: 
    b.delete() 
(8)关联对象的操作: 
    对于HeroInfo可以按照上面的操作方式进行 
    添加,注意添加关联对象 
    h=HeroInfo() 
    h.hname=u'郭靖' 
    h.hgender=True  
    h.hcontent=u'降龙十八掌' 
    h.hBook=b 
    h.save() 
关联集合 
获得关联集合:返回当前book对象的所有hero 
    h1= b.heroinfo_set.all()[0] 
    h1.hname 
    django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到子表的信息。 
    这个属性的名称默认是以子表的名称小写加上_set来表示 
    默认返回的是一个querydict对象 
    有一个HeroInfo 存在,必须要有一个 BookInfo 对象,提供了创建关联的数据: 
    h=b.heroinfo_set.create(hname=u'黄蓉',hgender=False,hcontent=u'打狗棍法') 

9.模版:(html)

    在网站目录下创建templates至目录
    修改settings.py文件,TEMPLATES :  'DIRS': [os.path.join(BASE_DIR,'templates')],
    在模板中访问视图传递的数据:{{输出值}} #变量,对象,属性
                    {%执行的代码%}
    定义index.html模板(首页)
    定义detail.html模板(详述)也可以自定义很多

10.视图:
对WEB请求进行回应(渲染),视图是一个python函数,定义在views.py中
视图接受reqeust对象作为第一个参数,包含了请求的信息
引入信息:
from django.http import HttpResponse(网页返回的内容)
还有你自己定义的模型方法名称:如from booktest.models import BookInfo,HeroInfo
(使用render()简化写代码)web响应


11.url:
Django 使用正则表达式匹配请求的url,一但匹配成功,调用应用的试图
至匹配路径部分,即去除域名、参数后的字符串
1、在项目的urls.py中配置url,跳转到指定应用中去 (一定要引入模块)
2、在应用的url.py中配置视图的url


12.启动服务器:
python mange.py runserver + ip:port(+后可有可无)
默认:127.0.0.1:8000
如果修改文件不需要重启服务器,如果增删文件需要重启服务器


*13.站点管理:
1.内容发布:
负责增、删、改内容
2.公共访问
django会根据定义的模型类完全自动化地生成管理模块


14.创建管理员:
python manage.py createsuperuser


15.界面本地化:
中文定制:
编辑settings.py,设置编码、时区
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'


16.向admin注册booktest的模型

    打开booktest/admian.py文件。注册模型:
    form django.contrib import admin
        from models import xxx
    admin.site.register(xxx)


  自动实现增删改查

17.自定义管理页面

django提供了admin.ModelAdmin类

from django.contrib import admin

# Register your models here.
from booktest.models import BookInfo,HeroInfo

关联BookInfo对象

class HeroInfoInline(admin.StackedInline):
    model = HeroInfo
    extra = 2 #额外显示关联的记录数

class BookInfoAdmin(admin.ModelAdmin):
    #定义显示的列表,可以点击列头进行排序
    list_display = ['id','btitle','bpub_date']
    #定义过滤字段,过滤框会出现在右侧
    list_filter = ['btitle']
    #定义搜索字段,出现在上方
    search_fields = ['btitle']
    #分页
    list_per_page = 1
    fieldsets = [
        ('基本信息',{'fields':['btitle']}),
        ('更多信息', {'fields': ['bpub_date']}),
    ]
    inlines = [HeroInfoInline]

admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容