Django项目创建流程

本文详细介绍了如何使用Django创建项目和应用,包括虚拟环境的配置、Django环境安装、MVT框架的运行流程、模型、视图、模板的实现。此外,还展示了如何设计和操作数据库模型,创建后台管理界面,以及实现URL路由和模板渲染。文章通过实例讲解了城市和英雄信息的展示,涉及URL路径设计、视图函数编写和模板文件的创建。
摘要由CSDN通过智能技术生成

一般的网站开发呢,会使用 MVC 框架,Django MVC 框架的基础上创建了 MVT 框架。

MVC 框架运行流程:

MVT框架运行流程

环境准备,使用Pycharm可以跳过这一步

1. 安装虚拟环境

sudo pip install virtualenv

2. 安装虚拟环境拓展包

sudo pip install virtualenvwrapper

3. 编辑 ~/.bashrc 文件,在最后末尾追加

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

4. 使用 source.bashrc 生效

source ~/.bashrc

5. 创建一个Python3的虚拟环境

mkvirtualenv -p python3 虚拟环境名称

6. 进入刚刚创建的虚拟环境工作

workon 虚拟环境名称

7. 查看本机上有几个虚拟环境

workon + 空格 + 两个tab键

8. 退出当前虚拟环境

deactivate 虚拟环境名称

9. 删除一个虚拟环境

rmvirtualenv 虚拟环境名称

10. 虚拟环境安装包名/模块

pip install 包名

11. 查看安装了哪些包

pip list
pip freeze

创建一个基础项目 

12. 安装Django环境

pip install django==1.8.2

13. 创建Django项目,必须在进入虚拟环境后创建

django-admin startproject 项目名

14. 创建一个Django应用

python manage.py startapp 应用名

15. 应用注册,修改 settings.py 中的 INSTALLED APPS 配置项,把刚刚注册的应用追加到末尾,格式:

' 刚刚创建的应用 '

16. 启动项目

python manage.py runserver

M模型部分 

17. Django 内嵌的 ORM 框架设计 模型类

18. 生成迁移文件,,首个迁移文件出现在 migrations 目录下,名称为 0001_initial.py

python manage.py makemigrations

19. 执行迁移生成表,生成表的默认命名: 应用名_模型类名小写

python manage.py migrate

20. 通过模型类操作数据表,进入 shell  命令:

python manage.py shell

21.  数据的操作详情:

# 从模型中导出设计好的类
from booktest.models import BookInfo,HeroInfo

1)	向 booktest_bookinfo 表中写入一条数据。(增删改查)
	b = BookInfo()  # 定义一个 BookInfo 类的对象
	b.btitle ='天龙八部'  # 定义b对象的属性并赋值
	b.bpub_date = date(1990,10,11) 
	b.save()  # 才会将数据保存进数据库

2) 查询出 booktest_bookinfo 表中id为1的数据。
	b = BookInfo.objects.get(id=1) 

3) 在上一步的基础上更改b对应图书的出版日期。
	b.bpub_date = date(1989,10,21)
	b.save()  # 更新表格中的数据

4) 紧接上一步,删除b对应的图书的数据。
	b.delete()  # 删除表中id为1的数据

5) 向 booktest_heroInfo 表中插入一条数据。
	h = HeroInfo()    # 生成一个HeroInfo类对象
	h.hname = '郭靖'  # 给对象赋值
	h.hgender = False
	h.hcomment = ‘降龙十八掌’
	b2 = BookInfo.objects.get(id=2) #生成一个id==2的对象存储BookInfo中id==2的书的全部信息
	h.hbook = b2  #给关系属性赋值,英雄对象所属的图书对象(即:英雄属于哪本书)
	h.save() 

6) 查询图书表里面的所有内容。
	BookInfo.objects.all()
   查询英雄的所有数据(所有英雄)
	HeroInfo.objects.all()

7) 查询出id为2的图书中所有英雄人物的信息。
	b = BookInfo.objects.get(id=2)
	b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息

22. 修改时区语言,修改 settings.py 文件中的

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

23. 创建管理员

python manage.py createsuperuser

24. 在应用的 admin.py 文件中注册模型类,告知 Django 框架根据注册的模型类生成对应的后台管理界面

1.导入要注册后台管理员界面的模板
from booktest.models import LOLcity
from booktest.models import LOLhero
2.注册模板
# Register your models here.
admin.site.register(LOLhero)
admin.site.register(LOLcity)

25. 运行:输入 http://127.0.0.1:8000/admin/ 进入管理员界面

26.  优化管理界面显示,在模板各函数中修改 __str__魔法方法,使其返回要返回的东西

    def __str__(self):
        # 返回书名
        return self.cityname

27. 自定义后台管理显示,显示更多管理信息,并在注册信息中讲管理类赋值声明

#  自定义英雄联盟城市管理类
class LOLcityAdmin(admin.ModelAdmin):
    list_display = ["id", "cityname", "citycreate"]


#  自定义英雄管理类
class LOLheroAdmin(admin.ModelAdmin):
    list_display = ["id", "hname", "hgender", "hcomment", "hcity"]


# Register your models here.
admin.site.register(LOLhero, LOLheroAdmin)
admin.site.register(LOLcity, LOLcityAdmin)

V视图部分:

28. 定义视图函数,在应用的 views.py 中,定义视图函数

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
    return HttpResponse('Hello World')

29. 在应用中新建一个 urls.py ,并参照系统文件的 urls 添加信息

from django.conf.urls import url
# 严格匹配开头和结尾
urlpatterns = []

30. 修改系统文件urls.py 中的内容 添加刚刚新建的urls的路径, 将刚刚创建的应用中的 urls.py 加入到路径中

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    # include包含应用中的urls文件
    url(r'^', include('booktest.urls'))
]

31. 当输入网址的时候,系统会自动先在系统的urls中进行正则匹配路径,一旦匹配就会进入路径,之后进入应用的 urls 中匹配,如此先建立一个 index 路径,切记严格匹配开头结尾

当匹配成功,就会进入到应用 views.py 中执行程序。

from django.conf.urls import url
from booktest import views
# 严格匹配开头和结尾
urlpatterns = [
    url(r'^index$', views.index),  # 建立/index和视图index之前的关系
]

32. 匹配成功后执行 views.index 中的视图项

 

T模板部分

流程:创建模板文件夹  ---->  配置模板目录  ---->  渲染模板

33. 在系统配置目录下创建一个 templates 文件夹,用于存放模板,并且,在此文件夹下逐个创建应用的模板文件夹

33. 在刚刚创建的具体应用模板下创建 html 文件,用于视图的调用,render函数 的第二个参数会调用刚刚的模板

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
    # return HttpResponse('Hello World')
    # render 函数第一个参数必须是request, 第二个参数为模板路径, 第三个参数为要传给模板的变量,用字典存放。
    return render(request,'web01/index.html', {'content':'hello world',
                                               'list':list(range(1,10))})

34. 模板可以接收变量,变量放在 {{ }} 中,for 循环放在{%  %}中,结尾加{% end for %} 

<h1>这是一个模板文件</h1>
使用模板变量<br>
{{ content }}<br>
{{ list }}<br>
for 循环<br>
<ul>
    {% for i in list %}
        <li>{{ i }}</li>
    {% endfor %}
</ul>

34. 重新刷新界面

小练习:访问指定网址显示出LOL城市信息,点击城市显示出其中英雄信息,如果没有英雄则显示没有英雄信息。

每个页面的思路:

1. 设计访问时需要输入的网址

2. 设计模板文件的名字

这个练习分为两个部分,一个是显示城市信息,一个是显示英雄信息

第一部分:

1 .在应用的 urls.py 中设置访问路径, 这里将给视图函数取名 show_city

2. 在 views.py 中设计视图函数 show_city 

3. 设计视图函数时,需要获取城市数据,所以要先从M中导入城市的数据, 通过 render 函数的第三个参数 将数据传给模板

4. 模板获取数据,显示界面

<head>
    <meta charset="UTF-8">
    <title>英雄联盟城市信息</title>
</head>
<body>
<h1>城邦信息如下</h1>
<ul>
    {% for city in citys %}
        <li><a href="/citys/{{ city.id }}">{{ city.cname }}</a></li>
    {% endfor %}
</ul>

第二部分:

1. 在应用的 urls.py 中设置访问路径,这里时根据城市的ID不同,访问的路径不同来设计,思路很重要。 正则中的()分组,会将数据传递给视图函数

2. 设计视图函数,需要将城市 idurls.py 中传过来,再从M中查询整本书中英雄的信息

3. 最后修改模板,遍历信息

<head>
    <meta charset="UTF-8">
    <title>显示城市中的英雄人物</title>
</head>
<body>
<h1>{{ city.cname }}</h1>
英雄信息如下:<br>
<ul>
    {% for hero in heros %}
        <li>{{ hero.hname }}--{{ hero.hcomment }}</li>
    {% empty %}
        <li>[{{ city.cname }}]没有英雄信息</li>
    {% endfor %}
</ul>

效果:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值