当前位置: 澳门新濠3559 > 编程 > 正文

目录说明,3、运行项目

时间:2019-11-02 22:14来源:编程
  环境: Django Web 框架来做Web(接口)开发,资源丰富。 1、django环境 1、python  3.6.2 官方建议在Python3 的最新版本下使用Django。 2、安装django:pip install django==1.10.3 Django官方网站: 2、创

 环境:

Django Web 框架来做Web(接口)开发,资源丰富。

1、django环境

1、python  3.6.2

官方建议在Python3 的最新版本下使用Django。

澳门新濠3559 1

2、安装django:pip install django==1.10.3

Django 官方网站:

2、创建项目和应用

 

Windows 安装Django

pip3 install django==1.10.3

在D盘新建文件夹pydj,然后cmd进入命令行

*下面以开发一个简单的用户签到系统介绍Django的使用

第一个Django项目

新建项目guest:

 

创建项目

如果你已经成功的安装Django,在.../python35/Scripts/目录中将会多出一个django-admin.exe 文件。在Windows 命令提示符下输入“django-admin”命令回车。
澳门新濠3559 2

这里罗列了Django 所提供给我们的命令,其中使用“startproject”命令来创建项目。

D:Docdjango   #切换到项目目录
λ django-admin startproject guest  #创建guest项目

 创建之后,目录结构如下:

澳门新濠3559 3

guest/settings.py:Django 项目的配置文件,包括Django 模块应用配置,数据库配置,模板配置等。
guest/urls.py:Django 项目的URL 声明。
guest/wsgi.py:为WSGI 兼容的Web 服务器服务项目的切入点。
manage.py:一个命令行工具,可以让你在使用Django 项目时以不同的方式进行交互。

D:pydj>django-admin startproject guest

创建Django项目:

创建应用

使用“startapp”命令创建应用。一个项目可以包含多个应用,而我们要开发的签到系统应该在具体应用下面完成。

D:Docdjangoguest
λ python3 manage.py startapp sign

 创建之后,目录结构如下:

澳门新濠3559 4

migrations/:用于记录models 中数据的变更。
admin.py:映射models 中的数据到Django 自带的admin 后台。
apps.py:在新的Django 版本中新增,用于应用程序的配置。
models.py:创建应用程序数据表模型(对应数据库的相关操作)。
tests.py:创建Django 测试。
views.py:控制向前端显示哪些数据。

新建应用sign:

命令行创建django项目步骤:

运行项目

Django 提供了Web 容器,只需要通过“runserver”命令就可以把项目运行起来,默认会通过本机的8000 端口来启动项目,打开浏览器,访问:

python3 manage.py runserver

启动时可以指定IP 地址和端口号,打开浏览器,访问:

python3 manage.py runserver 127.0.0.1:8001

D:pydjguest>python manage.py startapp sign

A django-admin startproject guest(project名)

创建Hello Django页面

1、配置guest/settings.py 文件,将sign 应用添加到项目中

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sign',  # 添加sign应用
]

2、命名一个/index/路径,配置guest/guest/urls.py文件,添加路由

from django.conf.urls import url
from django.contrib import admin
from sign import views  # 导入sign 应用views 文件

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/$', views.index),  # 添加index/路径配置
]

3、打开guest/sign/views.py,创建index函数

 

from django.http import HttpResponse


# Create your views here.
def index(request):
    return HttpResponse("Hello Django!")

HttpResponse 类存在django.http.HttpResponse 中,以字符串的形式传递给前端页面数据。

4、运行项目,打开 Diango!”页面,第一个Diango程序运行成功。

澳门新濠3559 5

3、运行项目

B 进入guest目录

 使用模板

现在要用HTML 页面来替代“Hello Django!”字符串,那么处理方式也会有所不同。

1、在应用sign/目录下创建templates/index.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Django Page</title>
</head>
<body>
    <h1>Hello Django!</h1>
</body>
</html>

2、修改视图文件views.py

from django.shortcuts import render


# Create your views here.
def index(request):
    return render(request, "index.html")

这次使用Django 的render 函数。该函数的第一个参数是请求对象,第二个参数返回一个index.html 页面。

 3、刷新页面,看到修改后的页面

D:pydjguest>python manage.py runserver 

C python3 manage.py startapp sign(创建APP,多次执行会生成多个app)

 Django 工作流

澳门新濠3559 6

4、在setting.py中配置应用

用PyCharm打开guest目录,目录结构如下图:

 

在guest/setteing.py中INSTALLED_APPS=[]中添加应用,配置模块应用

澳门新濠3559 7

关于URLconf

5、配置要访问的URL路径

目录说明:

1、Django处理一个请求的过程如下:

(1)Django使用的是根URLconf模块。这个值通常通过ROOT_URLCONF设置(在.../settings.py中)

(2)Django加载URLconf模块(url.py文件),并寻找可用的urlpatterns

(3)Django依次匹配每个URL模式,在于请求的URL匹配的第一个模式处停下来

(4)一档其中 一个正则表达式匹配上,则Django见请求指向对应的试图函数处理

(5)如果没哟匹配到,或者过程中抛出异常,这Django将调用一个适当的错误处理视图。

在guest/urls.py中urlpatterns=[]中配置要访问的URL路径

guest: 项目的容器。

2、关于urls.py的配置

前面urls.py的配置,使用python的正则表达式

r'^index/$'

r  字符串前面加“ r ”是为了防止字符串中出现类似“t”字符时被转义

^  匹配开头

$  匹配结尾

 通过^index/$ 匹配到/index/目录。并且将处理指向sign 应用的视图文件views.py 的index 函数

6、在views.py中编写控制前端输出的函数

manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。

Views视图

接下来请求的处理就到了.../sign/views.py 中的index 视图函数。如图

 澳门新濠3559 8

视图函数,简称视图,是一个简单的python函数,它接受web请求并返回web响应,响应可以是一张HTML网页、一个重定向、一个404错误、一张图片等。

7、django工作流程

**guest/__init__.py:** 一个空文件,告诉 Python 该目录是一个 Python 包。

templates 模板

打开.../sign/templates/index.html 文件。如图

澳门新濠3559 9

作为Web框架,Django需要一种非常便利的方法动态生成HTML。最常见的做法是使用模板,模板包含HTML、CSS、JS等。

1)用户在浏览器地址栏输入URL

**guest/settings.py:** 全局配置文件;包括Django 模块应用配置,数据库配置,模板配置等。

MTV开发模式

2)django拿到浏览器URL后,取得端口后后面的路径“/index”,在guest/urls.py文件中匹配,即urlpattern列表中

**guest/urls.py: **路由配置文件。

MVC模式

把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式。
M ,数据存取部分,由Django 数据库层处理

V ,选择显示哪些数据要显示以及怎样显示的部分

C ,根据用户输入委派视图的部分,由Django 框架根据URLconf 设置,对给定URL 调用适当的Python 函数

3)匹配完成后,调用相应函数(views.py中的index视图函数)处理数据

**guest/wsgi.py:** 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

MTV模式

由于C 由框架自行处理,而Django 里更关注的是模型(Model)、模板(Template)和视图(Views),Django 也被称为MTV 框架。在MTV 开发模式中:

M 代表模型(Model),即数据存取层。该层处理与数据相关的所有事务: 如何存取、如何验证有效

T 代表模板(Template),即表现层。该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示

V 代表视图(View),即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。你可以把它看作模型与模板之间的桥梁。

  

  

4)视图层返回的数据由templates模板层展示,即HTML页面

 

8、开发模式

migrations/:用于记录 models 中数据的变更。

MVC(Model-View-Controller)模式:

Model 代表数据存取层-----------由django数据库层处理,

View 代表的是系统中选择显示什么和怎么显示的部分,Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分------------由视图和模板处理

Controller ,根据用户输入委派视图的部分,由Django 框架根据URLconf 设置,对给定URL 调用适当的Python 函数。

admin.py:映射 models 中的数据到 Django 自带的 admin 后台。

因为Controller由框架处理,django更关注是模型(Model),模板(Template)、视图(views),也被称为MTV开发模式:

apps.py:在新的 Django 版本中新增,用于应用程序的配置。

M 代表模型(Model),即数据存取层。该层处理与数据相关的所有事务: 如何存取、如何验证有效

models.py:创建应用程序数据表模型(对应数据库的相关操作)。

T 代表模板(Template),即表现层。该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。

tests.py:创建 Django 测试。

V 代表视图(View),即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。你可以把它看作模型与模板之间的桥梁。

views.py:控制向前端显示哪些数据。

django视图

 

9、get请求和post请求

接下来,进入guest目录输入以下命令,启动服务器:

get请求会将用户提交的数据添加到URL地址中,路径后面跟?username 和password 为HTML 代码中标签的name 属性值,username=admin 表示用户名输入框得到的输入数据为“admin”。password=admin123 密码输入框得到的输入数据为“admin123”。多个参数之间用“&”符号隔开。

python3 manage.py runserver

澳门新濠3559 10

Django 默认会通过本机的 8000 端口来启动项目,如果你的当前环境该端口号被占用了,也可以在启动时指定 IP 地址和端口号。

post请求的数据会放在http包的包体中

python3 manage.py runserver 127.0.0.1:8001

“跨站请求伪造”( Cross-Site Request Forgery, CSRF)漏洞

打开浏览器,访问:

在from 表单中添加{% csrf_token %}

澳门新濠3559 11

10、render()函数

看到以上页面,说明Django已经开始工作了。

澳门新濠3559 12

环境已经就绪,下面进入真正的项目应用开发过程

{{error}}用法

1、配置一下 guest/settings.py 文件,将 sign 应用添加到项目中。

澳门新濠3559 13

澳门新濠3559 14

类HttpResponseRedirect,对路径进行重定向,从而使得登录成功后页面跳转

2、打开 guest/urls.py 文件添加用户登录页面的路由。

澳门新濠3559 15

澳门新濠3559 16

render与HttpResponseRedirect的区别是,当使用render转发时,他不会修改url,只是替换页面,所以适合定向到对应的页面中去,常规操作适合,简单,但是不适合转发,不改变url让人很难适应

3、打开../sign/views.py 文件创建 index 函数。

11、cookie和session

澳门新濠3559 17

cookie存储在客户端(浏览器)

定义 index 函数,并通过 HttpResponse 类向页面返回字符串“Hello django”。 HttpResponse 类存在 django.http.HttpResponse 中,以字符串的形式传递给前端页面数据。

存储cookie:

4、启动django执行程序

response = HttpResponseRedirect('./event_manage')

A、pycharm下可直接启动

response.set_cookie('user',username,3600)

B、命令行执行:python manage.py runserver 127.0.0.1:8001

user---存入浏览器的cookie名字

访问127.0.0.1:8001/index

username---用户在登录页上输入的名字

澳门新濠3559 18

3600-----cookie在浏览器中停留的时间

5、使用模板(Templates)

读取cookie:

现在用 HTML 页面来替代“Hello django”字符串,那么处理方式也会有所不同。

username = request.COOKIES.get('user','')

在应用 sign/目录下创建 templates/index.html 文件。

return render(request,"event_manage.html",{"user":username})

澳门新濠3559 19

session存储在服务器端

修改视图文件 views.py,这里抛弃 HttpResponse 类,转而使用 Django 的 render 函数。该函数的第一个参数是请求对象的,第二个参 数返回一个 index.html 页面

存储session:

澳门新濠3559 20

request.session['user']=username

再次访问127.0.0.1:8001/index,效果如下图

读取session:

澳门新濠3559 21

username=request.session.get('user','')

 总结一下,Django的工作流可以概括成下图:

12、django认证系统

澳门新濠3559 22

命令行创建超级用户:

需要说明的是,这个处理流程并非 Django 的完整处理过程,其中最主要的就是缺失了数据层(model) 的操作。

澳门新濠3559 23

我理解views文件在Django中非常重要,它是连接页面与数据的中间纽带。拿登录的例子来讲,用户在页面上输入了用户名和密码点击登录。那么 request 请求会由视图层views来接收,如何提取出用户名和密码的数据,如何用这些数据去查询数据库,再如何将登录成功的页面返回给用户,这些全部由视图层views来完成。

使用django认证登录

 

澳门新濠3559 24

与大多数的Web端开发框架一样,Django开发同样使用MVC模式

使用authenticate()函数认证给出的用户名和密码。它接受两个参数,用户名username 和密码password,并在用户名密码正确的情况下返回一个user 对象。如果用户名密码不正确,则authenticate()返回None。

M ,数据存取部分,由 Django 数据库层处理,本章要讲述的内容。

通过if 语句判断authenticate()返回如果不为None,说明用户认证通过。那么接下来调用login()函数进行登录。login()函数接收HttpRequest 对象和一个user 对象。

V ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。

@login_required必须登录才能访问

C ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数。

django模型

 

1、设计系统表

由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views), Django 也被称为 MTV 框架澳门新濠3559, 。

Django 提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作。

在 MTV 开发模式中:

Django 模型基础知识:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效

每个模型是一个Python 类,继承django.db.models.model 类。

T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显 示。

该模型的每个属性表示一个数据库表字段。

V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看 作模型与模板之间的桥梁。

guest/model.py

发布会表

澳门新濠3559 25

嘉宾表

澳门新濠3559 26

澳门新濠3559 27

migration和makemigration的区别:

在你改动了 model.py的内容之后执行下面的命令:

python  manger.py makemigrations

相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件你可以手动打开这个文件,看看里面是什么

在此之后执行命令

python manager.py migrate

将该改动作用到数据库文件,比如产生table之类

2、admin管理后台

澳门新濠3559 28

3、基本数据访问

from sign.models import Event,Guest

导入sign应用下models.py中的Event表和Guest表

table.objects.all()

获得table(Event、Guest表)中的所有对象

澳门新濠3559 29

table.objects.create()插入数据

澳门新濠3559 30

table.objects.get()查询数据

从数据库表中取得一条匹配的结果,返回一个对象,如果记录不存在的话,那么它会报DoesNotExist 类型错误。

澳门新濠3559 31

table.objects.filter()查询数据

从数据库中取得的结果是一个对象列表,如果记录不存在,返回[]

澳门新濠3559 32

name__contains相当于like

g1.delete()删除数据

澳门新濠3559 33

更新数据

澳门新濠3559 34

4、MySQL

查看数据库---show database

切换库---------use   database

查看表---------show tables

编辑:编程 本文来源:目录说明,3、运行项目

关键词: