Django入门 -- 框架操作基本流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django入门 -- 框架操作基本流程相关的知识,希望对你有一定的参考价值。
-- 入门
# Django开发流程: # 1.创建虚拟环境; # 2.安装django; # 3.创建项目; # 4.创建应用; # 5.在models.py中定义模型类,为视图提供数据; # 6.定义视图,处理浏览器请求 # 7.配置URL # 8.创建模板,呈现数据
-- 虚拟环境
# 针对python不同项目,而对应安装的一堆包的集合; -- ubuntu中安装虚拟环境的命令(安装两个虚拟环境包,第二个是简易化操作) sudo pip install virtualenv sudo pip install virtualenvwrapper -- 创建虚拟环境 mkvirtualenv 环境名称 mkvirtualenv py_django -- 查看与使用虚拟环境 workon 两次tab键 workon py_django -- 删除虚拟环境 rmvirtualenv 虚拟环境名称 先退出:deactivate 再删除:rmvirtualenv py_django # 在创建虚拟环境过程中,在home目录下的.virtualenvs文件下, # 会生成刚创建的虚拟环境,而且过程中系统会默认生成多个包, # 以及将usr/bin/文件下的python文件复制到这个虚拟环境包里 # 的/bin文件下; -- 查看当前所有的包 pip list 或者pip freeze # 或者:~/.virtualenvs/py_django/lib/python2.7/site-packages下 # 查看所有的包 -- 虚拟环境下安装包 pip install 包名称 安装django1.8.2的包 pip install django==1.8.2
-- 创建项目(图书,英雄,一对多的关系)
# 在Desktop下创建,不会出现权限问题; django-admin startproject 项目名称 --tree -- manage.py 是项目运行入口,指定配置文件路径; -- test1 包含项目的配置文件; -- __init__表示这个目录当作包使用; -- settings.py 是整体配置文件; -- urls.py 是URL配置文件; -- wsgi.py 是与WSGI兼容的web服务器入口;
-- 创建应用
python manage.py startapp booktest(应用名称) -- booktest -- admin.py --__init__.py -- migrations -- __init__.py -- models.py # 不许要手动到数据库中操作,直接在这个文件汇总添加类; -- tests.py
-- 添加/安装应用
在test1/settings.py中INSTALLED_APPS下添加应用名称就可以安装; ‘bootest‘; # 开启服务器(同时生成一个sql数据库) # python manage.py runserver ip:端口 # 1.ip可以不写; # 2.默认端口为8000
-- 模型设计
-- 创建模型类
-- ORM框架 将python的对象转换成数据库中sql的操作; # 通过自定义模型类和对象,完成对数据库的操作 -- 在manage.py中设置环境变量,用settings控制管理整个项目;(默认已经设置) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test1.settings") -- models.py # 定义类时,需要继承models.Model类; # class BookInfo(models.Model): btitle = models.CharField(max_length=20) # 设置字符长度; bpubdate = models.DateField() # 设置日期格式; # class HeroInfo(models.Model): hname = models.CharField(max_length=20) hcontent = models.CharField(max_length=100) hgender = models.BooleanField(default=True) # 设置布尔类型; hbook = models.ForeignKey(BookInfo) # 设置外键对象; -- 查看迁移文件对应的sql语句 python manage.py sqlmigrate news 0001 -- 生成迁移文件(相当于生成sql语句,以及执行) # 根据模型类与属性,确定表结构,生成文件; # 执行迁移; 生成:python manage.py makemigrations(执行sql语句) # 会在migrations文件下,0001_initial.py的文件,__init__.py # 里面是类似于sql语句的代码; 执行:python manage.py migrate(创建表结构) # 生成__init__.pyc文件
-- 使用模型类
-- 进入项目的shell,进行简单的API操作 python manage.py shell # 在模块中引入类对象,再进行操作; from booktest.models import BookInfo -- 在shell下对数据进行增删改查(忽略) BookInfo.objects.all() # 查询所有; # 创建对象 b=BookInfo() b.title=‘射雕英雄传‘ from datetime import date b.pub_date=date(2017,1,1) b.save() # 保存数据; # 创建/获取指定对象 b=BookInfo.objects.get(id=1) b.title=‘神雕侠侣‘ b.save() ...
-- 后台管理(CMS内容管理系统)
-- 创建管理员 -- 注册用户 python manage.py createsuperuser # 用户名默认:python;密码:chuanzhi -- 进入后台管理页面 # 修改界面语言(默认英文) settings.py文件中修改成 LANGUAGE = ‘zh-Hans‘;TIME_ZONE = ‘Asia/Shanghai‘ # 在.virtualenvs/py_django/lib/python2.7/site-packages/django/contrib/admin/locale/文件下 -- 启动服务器,浏览 python manage.py runserver http://127.0.0.1:8000/admin -- 注册 admin.py(注册模型类,将model.py创建的类引入后台) 引入模型类 from models import * admin.site.register(BookInfo) admin.site.register(HeroInfo) # str方法中,使用了中文,需要在models中str方法下的属性encode("utf-8") -- 支持自定义(在后台显示所有属性,继承admin.ModelAdmin类) class BookInfoAdmin(admin.ModelAdmin): list_display = [‘id‘, ‘title‘, ‘pub_date‘] class HeroInfoAdmin(admin.ModelAdmin): list_display = [‘id‘, ‘name‘, ‘content‘, ‘gender‘, ‘book‘] # 将添加属性的类添加到注册中; admin.site.register(BookInfo, BookInfoAdmin)
--视图 -- 定义视图函数(接受request,返回HttpResponse) # view # 本质就是一个函数; # 封装所有信息; from django.http import HttpResponse # 必须传入HttpRquest对象的request,返回HttpResonse对象; def index(request): return HttpResponse(‘hello world‘) -- 配置URLconf(找到对应视图函数) # 找到视图的过程: # 用户在浏览器输入url地址,请求访问网站后,服务器后台接受到信息, # 然后与写好的URLconf逐一匹配,如果匹配到就调用;没有就返回404错误; -- URLconf 编写规则 1.使用正则表达式定义; 2.使用view.py中定义的视图 -- URLconf 配置过程 1.在自己创建的应用(booktest)中创建urls.py文件,配置URLconf,定义; from django.conf.urls import url from . import views urlpatterns = [url(r‘^$‘, view.index),] # view.index调用视图模块中定义的index函数; 2.在项目中的url.py,链接到应用的URLconf中; url(r‘^‘, include(‘booktest.urls‘)), # 其完整代码 from django.conf.urls import include, url from django.contreib import admin urlpatterns = [ url(r‘^admin/‘, include(admin.site.urls)) url(r‘^‘, include(‘booktest.urls‘)), ] # 请求访问:127.0.0.1:8000
-- 模板
# 在Django中,将前端内容定义在模板中,再把模板交给视图调用; -- 创建模板 # 在项目目录下创建模板文件夹templates,并在其中创建与应用 # 同名的文件存放模板文件; -- 视图中寻找模板 -- 在settings.py中做设置,为了找到templates模板文件位置 ‘DIRS‘:[os.path.join(BASE_DIR, ‘templates‘)], # 拼接templates文件夹所在位置; -- 在views.py中加载渲染模板 def index(request): cag = NewsCategory.objects.get(pk=1) # pk(primary key)相当于Id data = {‘cag‘: cag.cag_name} tpl = loader.get_template(‘index.html‘) new_tpl = tpl.render(data) return HttpResponse(new_tpl) # 简写成一下操作: def index(request): return render(request, ‘booktest/index.html‘)
以上是关于Django入门 -- 框架操作基本流程的主要内容,如果未能解决你的问题,请参考以下文章