| 1 2 3 4 5 6 7 8 9 | # Django开发流程:# 1.创建虚拟环境;# 2.安装django;# 3.创建项目;# 4.创建应用;# 5.在models.py中定义模型类,为视图提供数据;# 6.定义视图,处理浏览器请求# 7.配置URL# 8.创建模板,呈现数据 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # 针对python不同项目,而对应安装的一堆包的集合;-- ubuntu中安装虚拟环境的命令(安装两个虚拟环境包,第二个是简易化操作) sudo pip install virtualenvsudo 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 |
| 1 2 3 4 5 6 7 8 9 | # 在Desktop下创建,不会出现权限问题;django-admin startproject 项目名称--tree-- manage.py 是项目运行入口,指定配置文件路径;-- test1 包含项目的配置文件;-- __init__表示这个目录当作包使用;-- settings.py 是整体配置文件;-- urls.py 是URL配置文件;-- wsgi.py 是与WSGI兼容的web服务器入口; |
| 1 2 3 4 5 6 7 8 | python manage.py startapp booktest(应用名称)-- booktest-- admin.py--__init__.py-- migrations -- __init__.py-- models.py # 不许要手动到数据库中操作,直接在这个文件汇总添加类;-- tests.py |
| 1 2 3 4 5 6 | 在test1/settings.py中INSTALLED_APPS下添加应用名称就可以安装;'bootest';# 开启服务器(同时生成一个sql数据库)# python manage.py runserver ip:端口# 1.ip可以不写;# 2.默认端口为8000 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | -- 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文件 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | -- 进入项目的shell,进行简单的API操作python manage.py shell# 在模块中引入类对象,再进行操作;from booktest.models import BookInfo-- 在shell下对数据进行增删改查(忽略)BookInfo.objects.all() # 查询所有;# 创建对象b=BookInfo()b.title='射雕英雄传'from datetime import dateb.pub_date=date(2017,1,1)b.save() # 保存数据;# 创建/获取指定对象b=BookInfo.objects.get(id=1)b.title='神雕侠侣'b.save()... |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | -- 创建管理员-- 注册用户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 runserverhttp://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) |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | --视图-- 定义视图函数(接受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 urlfrom . import viewsurlpatterns = [url(r'^$', view.index),] # view.index调用视图模块中定义的index函数;2.在项目中的url.py,链接到应用的URLconf中;url(r'^', include('booktest.urls')),# 其完整代码from django.conf.urls import include, urlfrom django.contreib import adminurlpatterns = [url(r'^admin/', include(admin.site.urls))url(r'^', include('booktest.urls')),]# 请求访问:127.0.0.1:8000 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 在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)相当于Iddata = {'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') |