<Django>第一篇:入门的例子
1.MVT框架
Model(模型):数据库交互相关。在这部分一般需要进行三个操作:
(1)面向数据库:模型对象、列表
(2)定义模型类:指定属性及类型,确定表结构(设计表),需要迁移(生成表)
(3)后台管理:创建管理员,启动服务器,admin,注册admin.py,就可以在admIn中完成表的增删改查
View(视图):核心,负责业务逻辑,获取请求(从URL控制器),获取数据(从Models获取数据),返回结果(结果给Template)、配置URL(自己的应用中配置)
Template(模板):放所有html(前端模板)文件、
加载:读取文件内容到内存
渲染:根据模板填入数据
展示的内容和我的处理逻辑不相关----解耦的思想
图解:

2.入门例子
(1)安装Django
pip install django #后面可接版本号
查看版本号(这里使用的是django 2.0.2版本)
# 版本查看(进入python shell)
import django
django.get_version()
(2)创建项目
django-admin startproject 项目名称

manage.py :启动文件
settings.py:项目设置,数据库信息,调试标志及其他工作变量
urls.py :路由,路径与视图函数的映射关系
wsgi.py:项目与WSGI兼容的服务器入口,runserver命令就能使用wsgiref模块做简单web服务
用pycharm创建项目(专业版)

结果:

(3)创建应用
cd 项目名称
pyhton manage.py startapp 应用名称

(4)定义模型类(models.py)
实际上就是定义表结构,并生成表
定义模型(表结构)models.py文件
from django.db import models # Create your models here. class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateTimeField() def __str__(self):
return "%s" % self.btitle class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField()
hcontent = models.CharField(max_length=100)
hBook = models.ForeignKey("BookInfo",on_delete=models.CASCADE,) def __str__(self):
return "%s" % self.hname
激活模型(编辑setting.py文件,将APP加入到install_apps)----或者说把应用注册到项目里面
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booktest',
]
生成迁移文件(实际上就是生成上述表结构对应的SQL语句)
python manage.py makemigrations
执行迁移(实际上就是利用上面SQL语句生成对应的表)
python manage.py migrate
建立管理员账户(为了进行表的管理)
python manage.py creatsuperuser
# 按照提示依次输入账号、邮箱、密码(不能全是数字缺大于8位)
管理界面中文(设置Settings.py文件)
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
把模型类注册到管理里面去(admin.py,这个文件就用作管理的)-----后台管理
from django.contrib import admin
# python3 写法
from .models import * # Register your models here.
# 关联注册 (内部停靠),
# class HeroInfoline(admin.StackedInline):
# 表格效果
class HeroInfoline(admin.TabularInline):
# 嵌入哪个类(一对多中,多的部分)
model = HeroInfo
# 增加一本图书的时候,还可以增加2个heroinfo
extra = 2 class BookInfoAdmin(admin.ModelAdmin):
# 列表页显示
# 列表
list_display = ['id', 'btitle', 'bpub_date']
# 过滤
list_filter = ['btitle']
# 搜索(支持模糊查询)
search_fields = ['btitle']
# 分页(每页显示多少条)
list_per_page = 10 # 添加页,修改页
# 展示列表fields 和 fieldsets只能同时存在一个,功能一致
# fields = ['bpub_date','btitle']
# 分组
fieldsets = [
('base', {'fields': ['btitle']}),
('super', {'fields': ['bpub_date']})
] # 关联注册第二步,关联起来(一对多中,一的部分)
inlines = [HeroInfoline] # admin.site.register(BookInfo)
# 注册
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo)
(5)定义视图(views.py)----本质就是函数
from django.shortcuts import render # response request
from django.http import * # 引用模板需要需要引入的包;loader(加载)
from django.template import RequestContext, loader # 通过模型类拿数据
from .models import * # Create your views here.
# 这里要创建index页面
def index(request):
'''
# 加载模板
temp = loader.get_template('booktest/index.html')
# 渲染模板,执行模板内容render()
return HttpResponse(temp.render())
'''
# 通过模型查数据
bookList = BookInfo.objects.all()
# 传入的数据
context = {'list':bookList}
# 封装成render函数 一步即可
return render(request, 'booktest/index.html',context)
(6)配置url(urls.py)
主urls
from django.contrib import admin
from django.urls import path
from booktest import views
# 分发urls
from django.conf.urls import include urlpatterns = [
path('admin/', admin.site.urls),
# 正则
path('index/', views.index),
# 分发urls,使用APP里面配置urls
path('',include('booktest.urls')),
]
一般为了防止主urls挂掉,影响全部APP,会在每个APP里面建立分urls(在app里创建urls.py文件)
from django.urls import path
from booktest import views urlpatterns = [
path('123/', views.index),
]
(7)创建模板(template)
为了简化在views里面对数据的处理,在项目同级目录建立template文件夹,并根据APP名称建立对应的文件夹,在文件夹里在建立模板

为了能导入模板,除了上面在views.py的设定外,还需要在setting.py中设定模板路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 去哪个目录找模板
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
</head>
<body>
{#遍历list#}
{% for book in list %}
<li>{{book.btitle}}</li>
{% endfor %} </body>
</html>
(0)运行django ---创建好Django,随时都可以进行
python manage.py runserver
运行结果

<Django>第一篇:入门的例子的更多相关文章
- 第一篇 入门必备 (Android学习笔记)
第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具 ●Android之父 Android安迪·罗 ...
- 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳
学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...
- log4cxx入门第一篇--一个小例子
先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88ab5a9d1f34693da ...
- storm第一篇--概念,例子,参数优化
1 概念 目前最新的0.8.0版本里面 worker -> 进程.一个worker只能执行同一个spout/bolt的task,一个worker里面可以有多个executor. executor ...
- django第一篇
摘要: 1 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.模型即后端逻辑,视图就是url对应的前端展示 2本文简介了使用模型 ...
- svn第一篇----入门指南
摘要:trunk存放的是主代码,不修改,branch,tag,milestone均是从trunk中衍生的.branch复制trunk中代码用于开发,tag用于存放比较重要的发行版,存放release版 ...
- curl讲解第一篇---入门和基本使用
概念 它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. curl同样支持HTTPS认证,HTTP POST方法, ...
- elasticsearch 第一篇(入门篇)
介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...
- Quartz -第一篇-入门
学习地址:https://www.imooc.com/learn/846 官网:www.quartz-scheduler.org 特点:分布式+集群 设计模式: 工厂模式 builder模式 组件模式 ...
随机推荐
- ZF、TP、CI等各种框架的区别
(原标题:面试常见问题之ZF.TP.CI等框架的区别 http://blog.163.com/m13341159039_1/blog/static/245953061201522092212820/) ...
- thinkphp 数据库缓存
默认的数据库驱动位于Think\Db\Driver命名空间下面,驱动类必须继承Think\Db类,每个数据库驱动必须要实现的接口方法包括(具体参数可以参考现有的数据库驱动类库): 驱动方法 方法说明 ...
- 帝国cms采集关键字方法
1.系统设置——管理数据表——管理字段——增加字段(字段名:keywords字段标识:关键词字段类型:字符型0-255字节长度:70存放表:主表前台内容显示:钩选"将回车替换成换行符&quo ...
- hadoop的基准测试
hadoop的基准测试 实际生产环境当中,hadoop的环境搭建完成之后,第一件事情就是进行压力测试,测试我们的集群的读取和写入速度,测试我们的网络带宽是否足够等一些基准测试 测试写入速度 向HDFS ...
- Ubuntu安装msf
环境 root运行 ubuntu18.04 腾讯云服务器 控制面板上面所有的端口全部放行 本机自带防火墙已拆 拆墙是为了能msf接受到会话 安装 curl https://raw.githubuser ...
- php 类静态变量 和 常量消耗内存及时间对比
在对类执行100w次循环后, 常量最快,变量其次,静态变量消耗时间最高 其中: 常量消耗:101.1739毫秒 变量消耗:2039.7689毫秒 静态变量消耗:4084.8911毫秒 测试代码: cl ...
- shell脚本实现GoDaddy中IPv6的动态域名解析(DDNS)_可在路由中运行
首先谈一下个人的需求,家里路由拿到了运营商的外网ipv6地址,于是想着将路由的各种服务通过DDNS放到外网上来,这才有下面的动态域名解析折腾.废话不多说,进入正题. 1.首先在godaddy中注册域名 ...
- MFC-CString与int互相转化
1. CString转int ; CString str = _T("123"); n = _ttoi(str); 2. int转CString ; CString str; st ...
- Java-Class-C:java.util.HashMap
ylbtech-Java-Class-C:java.util.HashMap 1.返回顶部 1.1. import java.util.HashMap; import java.util.Map; 1 ...
- How to Add Swap on CentOS
About Linux Swapping Linux RAM is composed of chunks of memory called pages. To free up pages of RAM ...