编辑

目录
(一)创建项目
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)数据库-》模型类
数据库反向建立模型类:https://www.cnblogs.com/andy9468/p/8810071.html
 
(3)修改表名、修改字段名、打印显示名称
 
(4)为模型类添加方法(推荐到模型类的管理器中直接添加方法)
 
2.迁移
迁移前,要手动创建数据库。
迁移由两步完成
(1)生成迁移文件:根据模型类生成创建表的sql语句
python manage.py makemigrations
 
(2)执行迁移:根据第一步生成的sql语句在数据库中创建表
python manage.py migrate
如果有警告,可以关闭:https://www.cnblogs.com/xb88/p/8057987.html 
 
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)

01-开始使用django(全、简)的更多相关文章

  1. HelloDjango 启动!免费带你学Django全栈!

    欢迎 追梦 入伙 HelloGitHub-Team,同时为我们带来了完全免费的 HelloDjango 系列教程,全网首发于 HelloGitHub 公众号.让想你的系列文章被跟多人看到,那就来加入我 ...

  2. django全流程--青空琉璃

    @python相关 1.多线程与多进程 https://zhuanlan.zhihu.com/p/45828888 2.用日志logging模块取代print() https://blog.csdn. ...

  3. 2019/01/17 对django项目部署的学习

    前记:最近在学习django项目的部署. 开发环境:windows10,使用pycharm,python2.7.15,django1.11.本地测试使用nginx和前端交互. 生产环境:centos7 ...

  4. 基于vue+Django的简迩音乐用户界面实现

    应这次软件工程课程要求,我们团队着力打造一个音乐播放器软件. 软件实现主要采用基于Vue.js+Python Django,前后端分离架构实现网页. 用户界面主要功能:呈现用户收藏歌单歌曲信息,并且提 ...

  5. Django框架简易图

  6. 是时候更新手里的武器了—Jetpack最全简析

    前言 Android Jetpack想必大家都耳熟能详了,Android KTX,LiveData,Room等等一系列库都是出自 Jetpack.那么 Jetpack到底是什么?又包含哪些你还没用过的 ...

  7. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  8. 【Django必备01】——什么是Django框架?有什么优势?模块组成介绍。

    01.什么是Django框架? Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式.使用这种架构,程序员可以方便.快捷地创建高品质.易维护.数据库驱动的应用程序. ...

  9. Django学习之七:Django 中间件

    目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...

  10. django 简易博客开发 2 模板和数据查询

    首先还是贴一下项目地址  https://github.com/goodspeedcheng/sblog   因为代码全在上面 上一篇博客我们介绍了 django的安装配置,新建project,新建a ...

随机推荐

  1. HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条

    页面技术:HTML5 + AJAX ( jQuery) 后台技术:Servlet 3.0 服务器:Tomcat 7.0 jQuery版本:1.9.1 Servlet 3.0 代码 package or ...

  2. 用Linux中man命令查询C函数

    大家都知道在Unix/Linux中有个man命令,可以查询常用的命令,函数.可是对于我们这样只知道用"man 函数名"来查询的人来说,会遇到很多问题,比如: man read,我想 ...

  3. Android——初学

  4. gitolite

    gitolite: https://github.com/sitaramc/gitolite https://github.com/sitaramc/gitolite/tags

  5. 9款很酷炫jQuery/HTML5特效应用 有源码哦~

            目前最流行的网页特效应用当属jQuery和HTML5的特效应用了,它们可以帮你快速实现网页中的各种特效设计.本文就为了收集了9款非常酷炫的jQuery/HTML5特效应用,可以很方便的 ...

  6. C++ 运算符重载二(一元运算符重载)

    //一元运算符重载 #include<iostream> using namespace std; class Point { public: Point(int x,int y){ th ...

  7. redhat7搭建本地yum仓库

    ftp服务器搭建 安装vsftpd yum install vsftpd 配置启动服务和防火墙 修改配置,由于默认不开启主动模式,需要配置开启,在/etc/vsftpd/vsftpd.conf添加如下 ...

  8. HDU 1284 钱币兑换问题(全然背包:入门题)

    HDU 1284 钱币兑换问题(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1284 题意: 在一个国家仅有1分,2分.3分硬币,将钱N ( ...

  9. 理解Loadrunner中的Browser Emulation Simulate

    案例 测试环境描述: 客户端 5台 Windows2000机器.服务器端  20台机器 一台F5(负载均衡设备,提供一个唯一的IP供客户端访问) 客户端绑定Host后,使用域名http://www.* ...

  10. pythonanywhere笔记

    https://www.pythonanywhere.com Deploying an existing Django project on PythonAnywhere Deploying a Dj ...