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 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 |
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 date b.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 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) |
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 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 |
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)相当于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' ) |