linux下使用django创建项目基本流程

django使用MVT框架,与常见的MVC有所不同。

M,model,负责与数据库交互
V,view,核心,负责接收请求、获取数据、返回结果
T,template,负责呈现内容到浏览器

 

整个开发流程大致有这么几步:

*环境搭建
*定义模型
*使用后台管理
*编写视图
*定义模板

 

step1:创建虚拟环境

一般开发项目,为了便于后期的迁移,先要创建一个新的虚拟环境,可以在全新和独立的条件下开发整个项目。

创建名为 h1 的虚拟环境:

mkvirtualenv h1

使用时,

workon h1

即可。

 
创建基于python3.5,名为my_django的虚拟环境:

mkvirtualenv -p /usr/bin/python3.5 my_django


常用命令:
workon :工作在虚拟环境下

mkvirtualenv :创建虚拟环境

rmvirtualenv :删除虚拟环境

deactivate :退出虚拟环境

pip list :查看当前虚拟环境安装的python包

pip install :安装python相关的包

pip freeze :将当前虚拟环境安装的python包和版本号格式化输出


step2:安装django

pip install django

 

step3:创建项目

 

django-admin startproject my_django

 

 

step4:创建应用

python3 manage.py startapp sports

创建一个应用
一些细节上的操作:

  • 别忘了去settings中注册应用
  • 改数据库为mysql,加上数据库名NAME、用户名、密码、HOST、端口3306
  • 在TEMPLATES中写入DIRS模板目录

 


step5:设计模型
  

慎重慎重再慎重!!重要数据要有isDelete列,性别用bool类型

  • 在models.py中定义模型类
from django.db import models

class BookInfo(models.Model):
    ...
class HeroInfo(models.Model):
    ...
    hero = models.ForeignKey('BookInfo')

  • 在models中定义完模型类后,(这一步可以通过python3 manage.py inspectdb > sports/models.py来使用mysql数据库中已有的表自动生成模型类)

接着生成迁移文件,执行迁移:

python3 manage.py makemigrations
python3 manage.py migrate
  • 执行完迁移后可以进shell中测试表数据的查询等操作。
python3 manage.py shell
  • 导入模型类:
from sports.models import *
  • 执行查询:
Y2015.objects.all()
x = Y2015.objects.get(pk=20151000840)
x.grade
  • 可以在models中类加上__str__方法,调用x直接返回pk字段,但要注意返回的必须是string类型!

 

python3 manage.py runserver

如果虚拟机上运行服务器,然后想在主机上进入网页,会报错Invalid HTTP_HOST header
需要进入settings中修改

ALLOWED_HOSTS = ['*']

即可!!

 

  • 后台管理
python3 manage.py createsuperuser

然后按要求设置用户名和密码

进入admin页面,登录,发现是英文,去settings中可以将'en-us'改成'zh-hans',使其显示为中文


要想在管理页面中看到我们的数据模型,需要注册模型类:
编辑admin.py,注册模型类

from django.contrib import admin
from .models import *
admin.site.register(Y2015)

 

  • 自定义管理页面

Django提供了admin.ModelAdmin类,通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式

class Y2015Admin(admin.ModelAdmin):
# 显示字段,可以点击列头排序
list_display = ['学号','年级','姓名','性别','身高','体重','BMI指数','肺活量','跑_50米','立定跳远','坐位体前屈','跑_800米','仰卧起坐','跑_1000米','引体向上','学年总分','附加分','等级评定']
# 过滤字段,过滤框在右侧
list_filter = ['年级','性别']
# 搜索字段,搜索框出现在顶部,支持模糊查询
search_fields = ['学号']
admin.site.register(Y2015, Y2015Admin)

 

  • 表的名字Y2015在管理界面显示太难看怎么办?
class Y2015(models.Model): 
class Meta:
verbose_name = '好看的名字'
verbose_name_plural = '好看的名字' 

 

 

  • 应用的名字也可以修改,去init中设置,见图。

 


step6:定义视图

from django.http import *
def index(request):
  return HttpResponse("hello world")

 


step7:配置url


定义完视图后,要配置路由,一般是先在根级的urls.py中配置各个应用urls的映射路径,再进入各自应用的urls中写好匹配规则。

# 应用中的urls
from
django.conf.urls import url urlpatterns=[   url(r'^$',views.index) ]

 


step8:创建模板

为了让视图里返回的内容更丰富一些,使用模板,在项目的根目录下创建templates文件夹,然后再创建对应的应用文件夹,在其中创建index.html,

为了让views能使用模板,在views中引入模板模块:

from django.http import *
from django.template import RequestContext,loader

def index(request):
    temp = loader.get_template('booktest/index.html') # 加载模板
    context = RequestContext(request, {})
    return HttpResponse(temp.render(context)) # 解析、渲染内容

 


上面先加载再渲染的过程,可以简化为一步:

from django.shortcuts import render

def index(request):
    return render(request,'booktest/index.html')
  • 记住还要在settings中设置TEMPLATES中的DIRS路径为之前templates文件夹的路径,os.path.join(BASE_DIR,'templates')

 

返回结果的第三个参数,设置传入模板的上下文数据context:

from .models import *

def index(request):
    bookList = BookInfo.objects.all()
    context = {'list':bookList}
    return render(request,'booktest/index.html',context)


然后就可以在index.html中输出title变量:{{title}}

也可以插入python代码:

{%for book in list%}
 <li>{{book.btitle}}</li>
 {%endfor%}

 

posted @ 2018-02-03 15:57  尘埃丶落定  阅读(355)  评论(0编辑  收藏  举报