编辑
目录
(一)创建项目
1、生成django默认目录
2、创建应用目录
3、安装应用
4、配置使用mysql数据库
5、运行轻量级web服务器,预览
(二)设计模型
1.在models.py中定义模型类
2.迁移
3.通过类和对象完成数据crud
(三)后台管理(管理站点,编辑)
1.管理界面本地化
2.创建管理员
3.注册模型类
4.自定义管理页面
(四)视图和URL(控制器和调用方法)
1.定义视图
2.配置URLconf
(五)模板
1.定义模板
2.视图调用模板(简写)
可选项:创建虚拟环境
mkvirtualenv -p python3 bj11_py3
使用虚拟环境
workon bj11_py3
安装第三方包
pip install django==1.8.2
(一)创建项目
1、生成django默认目录
打开pycharm,点击File->New Project菜单,创建django目录结构
或者
python3 XXX/scripts/django-admin.exe startproject test1
2、创建应用目录
在pycharm的terminal终端
python manage.py startapp booktest
3、安装应用(注册应用)
在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装,在元组中添加一个新的项,当前示例为booktest
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booktest',
)
4、配置使用mysql数据库
django默认的数据库是slqite,需要修改为mysql数据库。
settings.py中修改配置为:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': "mydjangodb",
'HOST': 'localhost',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'root',
}
}
为django的MySQLdb()方法,修改pymysql的数据操作方法起一个MySQLdb()别名
项目名称的主包下,__init__.py添加为
import pymysql
pymysql.install_as_MySQLdb()
如果之前有数据库,就把数据库模型考过来(放到models.py)。无需迁移操作。
5、运行轻量级web服务器,预览
python manage.py runserver 8000
或者
python manage.py runserver 127.0.0.1:8000
python manage.py runserver 0.0.0.0:8000 --insecure
(--insecure 参数用于解决关闭调试模式时,无法加载js、css的问题。
参考)
然后在浏览器中输入网址“127.0.0.1:8000”
或者直接点击pycharm右上角的运行按钮
(二)设计模型
1.在models.py中定义模型类
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
def __str__(self):
return "%d" % self.pk
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField()
hcontent = models.CharField(max_length=100)
hBook = models.ForeignKey('BookInfo')
def __str__(self):
return "%d" % self.pk
延伸:
(1)模型类-》数据库
(2)数据库-》模型类
(3)修改表名、修改字段名、打印显示名称
(4)为模型类添加方法(推荐到模型类的管理器中直接添加方法)
2.迁移
迁移前,要手动创建数据库。
迁移由两步完成
(1)生成迁移文件:根据模型类生成创建表的sql语句
python manage.py makemigrations
(2)执行迁移:根据第一步生成的sql语句在数据库中创建表
3.通过类和对象完成数据crud
(三)后台管理(管理站点,编辑)
1.管理界面本地化
打开test1/settings.py文件,找到语言编码、时区的设置项,将内容改为如下
LANGUAGE_CODE = 'zh-Hans' # 设置汉语显示
TIME_ZONE = 'Asia/Shanghai' # 设置具体时区,配合USE_TZ使用
USE_I18N = True
USE_L10N = True
USE_TZ = False # 使用非美国时区
2.创建管理员
在Terminal中执行如下命令,用于创建管理员
python manage.py createsuperuser
根据提示创建超级用户python
打开浏览器,在地址栏中输入如下地址后回车
输入前面创建的用户名、密码完成登录
3.注册模型类
登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行crud操作
打开booktest/admin.py文件,编写如下代码
from django.contrib import admin
from .models import BookInfo,HeroInfo
admin.site.register(BookInfo)
admin.site.register(HeroInfo)
到浏览器中刷新页面,可以看到模型类BookInfo和HeroInfo的管理了
说明:
点引用方案: from .models import BookInfo,HeroInfo 中 .models的含意:同级目录用点.
项目等效方案:from booktest.models import BookInfo,HeroInfo 中 booktest.models的含义是:从项目的入口文件(manage.py)所在目录开始找。
4.自定义管理页面
打开booktest/admin.py文件,自定义类,继承自admin.ModelAdmin类
属性list_display表示要显示哪些属性
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['pk', 'btitle', 'bpub_date']
修改模型类BookInfo的注册代码如下
admin.site.register(BookInfo, BookInfoAdmin)
最终booktest/admin.py文件代码如下
from django.contrib import admin
from .models import BookInfo, HeroInfo
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['pk', 'btitle', 'bpub_date']
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['pk', 'hname', 'hgender', 'hcontent']
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)
说明:数据修改功能为,进入admin管理页面,打开表格,点击每一行中有超链接的字段数据,就可修改。一般该字段为id字段。
(四)视图和URL(控制器和调用方法)
1.定义视图views.py
打开booktest/views.py文件,定义视图index如下
#coding:utf-8
from django.http import HttpResponse
def index(request):
return HttpResponse("index")
2.配置URLconf
(1)在test1/urls.py文件,为urlpatterns列表增加项如下
url(r'^', include('booktest.urls')),
(2)在booktest/应用下创建urls.py文件,定义代码如下
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index),
]
拓展:r的作用
url(r'^detail\d$', views.index)
或者
url('^detail\\d$', views.index)
原因是
python将\视为转义
正则也将\视为转义
视图和URLconf都定义好了,接下来在浏览器地址栏中输入网址
http://127.0.0.1:8000/
(五)模板
1.定义模板
打开test1/templates/booktest/index.html文件,定义代码如下
(1)模板变量:在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的
(2)模板标签:在模板中编写代码段语法如下
{%代码段%}
1)例一:循环
<ul>
{% for i in list %}
<li>{{ i }}</li>
{% endfor %}
</ul>
(3)模板中注释
①单行注释
②多行注释:
{% comment %}
注释内容1
注释内容2
{% endcomment %}
定义模板内容如下
<html>
<head>
<title>图书列表</title>
</head>
<body>
<h1>{{title}}</h1>
{%for i in list%}
{{i}}
{%endfor%}
</body>
</html>
设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值
'DIRS': [os.path.join(BASE_DIR, 'templates')],
2.视图向模板传送数据
打开booktest/views.py文件,调用render的代码如下
#coding:utf-8
from django.shortcuts import render
def index(request):
context={'title':'图书列表','list':range(10)}
return render(request,'booktest/index.html',context) # 渲染到模板
小结:HttpResponse和render
HttpResponse覆盖原有页面,输出内容,如:
return HttpResponse("show1 i am %s" % id)
render将数据从视图传送到模板页面,如:
context={'title':'图书列表','list':range(10)}
return render(request,'booktest/index.html',context)
- HelloDjango 启动!免费带你学Django全栈!
欢迎 追梦 入伙 HelloGitHub-Team,同时为我们带来了完全免费的 HelloDjango 系列教程,全网首发于 HelloGitHub 公众号.让想你的系列文章被跟多人看到,那就来加入我 ...
- django全流程--青空琉璃
@python相关 1.多线程与多进程 https://zhuanlan.zhihu.com/p/45828888 2.用日志logging模块取代print() https://blog.csdn. ...
- 2019/01/17 对django项目部署的学习
前记:最近在学习django项目的部署. 开发环境:windows10,使用pycharm,python2.7.15,django1.11.本地测试使用nginx和前端交互. 生产环境:centos7 ...
- 基于vue+Django的简迩音乐用户界面实现
应这次软件工程课程要求,我们团队着力打造一个音乐播放器软件. 软件实现主要采用基于Vue.js+Python Django,前后端分离架构实现网页. 用户界面主要功能:呈现用户收藏歌单歌曲信息,并且提 ...
- Django框架简易图
- 是时候更新手里的武器了—Jetpack最全简析
前言 Android Jetpack想必大家都耳熟能详了,Android KTX,LiveData,Room等等一系列库都是出自 Jetpack.那么 Jetpack到底是什么?又包含哪些你还没用过的 ...
- python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)
昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...
- 【Django必备01】——什么是Django框架?有什么优势?模块组成介绍。
01.什么是Django框架? Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式.使用这种架构,程序员可以方便.快捷地创建高品质.易维护.数据库驱动的应用程序. ...
- Django学习之七:Django 中间件
目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...
- django 简易博客开发 2 模板和数据查询
首先还是贴一下项目地址 https://github.com/goodspeedcheng/sblog 因为代码全在上面 上一篇博客我们介绍了 django的安装配置,新建project,新建a ...
随机推荐
- 大数据处理-Bloom Filter
大数据处理--Bloom Filter 布隆过滤器(Bloom Filter)是由巴顿.布隆于一九七零年提出的.它实际上是一个很长的二进制向量和一系列随机映射函数. 如果想判断一个元素是不是在一个集合 ...
- jQuery无刷新分页完整实例代码
在线演示地址如下: http://demo.jb51.net/js/2015/jquery-wsx-page-style-demo/ <!DOCTYPE html> <head> ...
- Toad 所有 菜单说明(太多)
菜单说明 新版本 toad 软件中, 比较有用的菜单 session 菜单 Session Information: 显示当前session的用户的情况, 比如权限, 授权等 Database ...
- mysql存储过程,获取指定数据库的某个表的字段信息
DROP PROCEDURE IF EXISTS Proc; DELIMITER //CREATE PROCEDURE Proc(database_name varchar(50),table_nam ...
- Spring HttpIvoker实现Java的远程调用
Spring HttpInvoker一种JAVA远程方法调用框架实现,使用的是HTTP协议,允许穿透防火墙,使用JAVA系列化方式,但仅限于Spring应用之间使用,即调用者与被调用者都必须是使用Sp ...
- pychram最新注册码
2016年的激活码只能用到2017.2.25,于昨日已经过期了. 现提供最新激活码: BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZW ...
- Struts2_day02--课程安排_结果页面配置
Struts2_day02 上节内容 今天内容 结果页面配置 全局结果页面 局部结果页面 Result标签的type属性 Action获取表单提交数据 使用ActionContext类获取 使用Ser ...
- iOS Web开发
1.让web页面的输入框是数字键盘 html 中 input 的 type = "tel"
- Splash界面完美实现
Flash闪烁界面的实现原理 1.首先 new一个数组里面放一些Random图片 private int[] drawables = new int[]{R.drawable.a,R.adable.b ...
- 【深入Java虚拟机】之二:Class类文件结构
平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现.不仅使用Java编译器可以把Java代码编译成存储字节码的Cla ...