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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容