编辑
目录
(一)创建项目
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 ...
随机推荐
- HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条
页面技术:HTML5 + AJAX ( jQuery) 后台技术:Servlet 3.0 服务器:Tomcat 7.0 jQuery版本:1.9.1 Servlet 3.0 代码 package or ...
- 用Linux中man命令查询C函数
大家都知道在Unix/Linux中有个man命令,可以查询常用的命令,函数.可是对于我们这样只知道用"man 函数名"来查询的人来说,会遇到很多问题,比如: man read,我想 ...
- Android——初学
- gitolite
gitolite: https://github.com/sitaramc/gitolite https://github.com/sitaramc/gitolite/tags
- 9款很酷炫jQuery/HTML5特效应用 有源码哦~
目前最流行的网页特效应用当属jQuery和HTML5的特效应用了,它们可以帮你快速实现网页中的各种特效设计.本文就为了收集了9款非常酷炫的jQuery/HTML5特效应用,可以很方便的 ...
- C++ 运算符重载二(一元运算符重载)
//一元运算符重载 #include<iostream> using namespace std; class Point { public: Point(int x,int y){ th ...
- redhat7搭建本地yum仓库
ftp服务器搭建 安装vsftpd yum install vsftpd 配置启动服务和防火墙 修改配置,由于默认不开启主动模式,需要配置开启,在/etc/vsftpd/vsftpd.conf添加如下 ...
- HDU 1284 钱币兑换问题(全然背包:入门题)
HDU 1284 钱币兑换问题(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1284 题意: 在一个国家仅有1分,2分.3分硬币,将钱N ( ...
- 理解Loadrunner中的Browser Emulation Simulate
案例 测试环境描述: 客户端 5台 Windows2000机器.服务器端 20台机器 一台F5(负载均衡设备,提供一个唯一的IP供客户端访问) 客户端绑定Host后,使用域名http://www.* ...
- pythonanywhere笔记
https://www.pythonanywhere.com Deploying an existing Django project on PythonAnywhere Deploying a Dj ...