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>第一篇:入门的例子的更多相关文章

  1. 第一篇 入门必备 (Android学习笔记)

    第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具   ●Android之父 Android安迪·罗 ...

  2. 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...

  3. log4cxx入门第一篇--一个小例子

    先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88ab5a9d1f34693da ...

  4. storm第一篇--概念,例子,参数优化

    1 概念 目前最新的0.8.0版本里面 worker -> 进程.一个worker只能执行同一个spout/bolt的task,一个worker里面可以有多个executor. executor ...

  5. django第一篇

    摘要: 1 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.模型即后端逻辑,视图就是url对应的前端展示 2本文简介了使用模型 ...

  6. svn第一篇----入门指南

    摘要:trunk存放的是主代码,不修改,branch,tag,milestone均是从trunk中衍生的.branch复制trunk中代码用于开发,tag用于存放比较重要的发行版,存放release版 ...

  7. curl讲解第一篇---入门和基本使用

    概念 它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. curl同样支持HTTPS认证,HTTP POST方法, ...

  8. elasticsearch 第一篇(入门篇)

    介绍 elasticsearch是一个高效的.可扩展的全文搜索引擎 基本概念 Near Realtime(NRT): es是一个接近实时查询平台,意味从存储一条数据到可以索引到数据时差很小,通常在1s ...

  9. Quartz -第一篇-入门

    学习地址:https://www.imooc.com/learn/846 官网:www.quartz-scheduler.org 特点:分布式+集群 设计模式: 工厂模式 builder模式 组件模式 ...

随机推荐

  1. leetcood学习笔记-54-螺旋矩阵

    题目描述: 第一次提交: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: j,x = 0 ...

  2. kafka?kafaka! kafka...

    kafka?kafaka! Kafka... kafka是什么? 答:Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅 ...

  3. join加入线程

    join线程会抢先拿到cup来执行线程,然后其他的线程再来执行. 案例: public static void main(String args[]){ //创建线程对象 Thread myThrea ...

  4. thinkphp 类的扩展

    ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载. 大理石平台价格 公共类库 公共类库通常是指ThinkPHP/Library目 ...

  5. 43 编译原理及cmake使用手册学习

    0 引言 大量开源库需要通过cmake编译后使用,了解cmake的基本指令以及CMakeLists.txt的写法非常重要,其基础是了解编译原理.另外,为了对cmake编译的代码进行调试,需要了解CMa ...

  6. USACO 06JAN 牛的舞会 洛谷2863

    题目描述 The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in their ...

  7. 用注册表创建无法删除的IE快捷方式

    代码如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/{98745625-1234 ...

  8. LeetCode 595. Big Countries (大的国家)

    题目标签: 题目给了我们一个 world table,让我们找出 面积大于3 million square km 或者 人口大于 25 million. 直接用两个条件搜索. Java Solutio ...

  9. Git 本地仓库管理

    目录 目录 基本概念 配置 配置个人帐号信息 安装 本地版本库 创建 Git 仓库 Git 仓库版本回退 修改管理 基本概念 工作区(Working Directory): 就是你在电脑里能看到的目录 ...

  10. Openstack-L 路由注入方式

    目录 目录 前言 从 Commands 到 Action 操作函数 前言 Openstack 新旧版本提供了不同的路由注入方式,也就是 Route Module 的代码方式不同,就二次开发而言用那一种 ...