<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模式 组件模式 ...
随机推荐
- 针对list<object>中的对象数据的一些简单处理
一 首先创建一个实体类(PersonData ): package hello; public class PersonData { String Id; String Name; String ...
- delphi 键盘常用参数(PC端和手机端 安卓/IOS)
常数名称(红色手机端) 十六进制值 十进制值 对应按键(手机端) Delphi编程表示(字符串型)_tzlin注 0 0 大键盘Delete键 #0 VK_LBUTTON 1 1 鼠标的左键 #1 V ...
- Vue.js和Webpack
Vue.js Vue简单介绍 是一个轻量级的渐进式框架,一个前端项目可以使用使用Vue.js的一两个特性也可以整个项目都用Vue.js,很方便实现项目的增量开发 Vue.js的使用:() 在html页 ...
- Ruby 安装 – Windows
Ruby 安装 – Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤. 注意:在安装时,您可能有不同的可用版本. - Window 系统下,我们可以使用 RubyInstal ...
- poi之Excel上传
poi之Excel上传 @RequestMapping(value = "/import", method = RequestMethod.POST) public String ...
- Delphi GDI对象之脱屏位图(Offscreen Bitmaps)
脱屏位图(Offscreen Bitmaps) 脱屏位图,也叫内存位图,普遍用于Windows程序设计中.它在内存中制作图像,然后利用Draw方法在屏幕上显示出来.当用户想更快的在屏幕上绘制图像时,脱 ...
- 图片和base64 二进制相互转换
package com.xldz.xlworkbench.util; import java.awt.image.BufferedImage; import java.io.ByteArrayInpu ...
- 如何把本地文件上传github
1.$ git config --global user.name "xxx" 2.$ git config --global user.email xxx@qq.com 3.进入 ...
- 金三银四铜五铁六,Offer收到手软!
作者:鲁班大师 来源:cnblogs.com/zhuoqingsen/p/interview.html 文中的鲁班简称LB 据说,金三银四,截止今天为止面试黄金时间已经过去十之八九,而LB恰逢是这批面 ...
- Neo4j和Elasticsearch
Neo4j和Elasticsearch Neo4j和Elasticsearch是一种让人眼前一亮的组合,为什么需要把搜索和图表结合起来呢?它们是如何使用的呢? 在无处不在的互联网搜索引擎的推动下,全文 ...