Django是Python开发最火热的一个框架!小白必学的Django框架!

Django是Python开发最火热的一个框架!小白必学的Django框架!

进群:548377875   即可获取数十套PDF哦!

3、Django项目目录

1) urls.py:网址入口,关联到对应的views.py中的一个函数(或generic类),访问网址就对应一个函数

2) views.py:处理用户发出的请求,与urls.py对应,通过渲染templates中的网页可以将显示内容,如登陆后的用户名用户请求的数据等输出到网页。

3) models.py:与数据库操作相关,存入或读取数据时用到,用不到数据库时可以不使用。

4) forms.py:表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,也可以不使用。

5) templates文件夹:views.py中的函数渲染templates中的html模板,得到动态内容的网页,可以用缓存来提高速度。

6) admin.py:后台,可以用很少的代码就拥有一个强大的后台

7) settings.py:Django 的配置文件,如 DEBUG 的开关,静态文件的位置等。

Django是Python开发最火热的一个框架!小白必学的Django框架!

Django是Python开发最火热的一个框架!小白必学的Django框架!

5、视图与网址

views.py:

from django.http import HttpResponse

def helloWorld(request):

return HttpResponse("Hello World! ")

urls.py:

from django.conf.urls import url

from . import view

urlpatterns = [

url(r'^$',view.helloWorld)

]

启动服务器,并在浏览器访问:127.0.0.1:8000。

修改后的urls.py:

from django.conf.urls import url

from . import view

urlpatterns = [

url(r'^helloWorld$',view.helloWorld)

]

启动服务器,并在浏览器访问:127.0.0.1:8000/helloWorld。

url() 函数:可以接收四个参数,分别是两个必选参数regex、view 和两个可选参数kwargs、name:

① regex:正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。

② view:用于执行与正则表达式匹配的 URL 请求。

③ kwargs:视图使用的字典类型的参数。

④ name:用来反向获取 URL。

6、Django模板

1) 实例:

① 在app目录中,创建 templates 目录并建立 helloWorld.html文件

  1. {{ helloWorld }}

② 向Django说明模板文件的路径,修改settings.py文件修改 TEMPLATES 中的 Dirs 为 [BASE_DIR+"/templates",]。

③ 修改views.py:

from django.shortcuts import render

def hello(request):

context = {}

context['helloWorld'] = 'Hello World!'

return render(request,'helloWorld.html',context)

render使用了一个字典 context 作为参数,context 字典中元素的键值 "helloWorld" 对应了模板中的变量 "{{ helloWorld }}"。

④ 启动服务器,并在浏览器访问:127.0.0.1:8000/helloWorld。

2) Django 模板标签

① if/else 标签

if/else支持嵌套,{% if %} 标签接受and、or 或not关键字来对多个变量做判断,或对变量取反。

  1. {% if condition %}
  2. ...
  3. {% endif %}

或者:

  1. {% if condition1 %}
  2. ...
  3. {% elif condiiton2 %}
  4. ...
  5. {% else %}
  6. ...
  7. {% endif %}

② for 标签

{% for %} 允许在一个序列上迭代。支持嵌套。每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容

    • {% for person in list %}
    • {{ person.name }}
    • {% endfor %}

标签增加一个 reversed 使得该列表被反向迭代:

  1. {% for person in list %}
  2. ...
  3. {% endfor %}

③ ifequal/ifnotequal 标签

{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签

  1. {% ifequal person1 person2 %}
  2. YES

  3. {% endifequal %}

④ 注释标签

Django 注释使用 {# #}。

⑤ 过滤器

模板过滤器可以在变量被显示修改它,过滤器使用管道字符:

{{ name|lower }}大写转换为小写。

一个过滤器管道的输出又可以作为下一个管道的输入:

{{ name|first|upper }}将第一个元素转化为大写。

有些过滤器有参数,过滤器的参数跟随冒号之后并总是以双引号包含:

{{ name|truncatewords:"3" }}显示变量的前3个词。

addslashes:添加反斜杠到任何反斜杠、单引号或者双引号前面。

date:按指定的格式字符串参数格式化date或datetime对象,如{{ pub_date|date:"F j,Y" }}。

length:返回变量的长度。

⑥ include 标签

{% include %} 标签允许在模板中包含其它的模板的内容

  1. {% include "test.html" %}

7、Django模型

Django 对各种数据库提供了很好的支持,Django 为数据库提供了统一的调用API,可以根据业务需求选择不同的数据库

MysqL数据库为例,安装 MysqL 驱动的命令:sudo pip install MysqLclient。

1) 数据库配置

在项目的settings.py文件中找到 DATABASES 配置项,将其信息修改为:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.MysqL',# 或者使用 MysqL.connector.django

'NAME': 'test',

'USER': 'test',

'PASSWORD': 'test123',

'HOST':'localhost',

'PORT':'3306',

}

}

这里添加中文注释,所以需要在settings.py 文件头部添加 # -*- coding: UTF-8 -*-。

2) 定义模型

① 创建APP:

Django规定,如果要使用模型,必须要创建一个app,使用以下命令创建一个app:python manage.py startapp TestModel。

② 修改 TestModel/models.py 文件

from django.db import models

class Test(models.Model):

name = models.CharField(max_length=20)

类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

③ 在settings.py中找到INSTALLED_APPS这一项,添加:'TestModel'。

④ 在命令行中运行以下命令,创建数据表,表名为应用名_类名(如:TestModel_test):

view plain copy

python manage.py migrate # 创建表结构

python manage.py makemigrations TestModel # 让Django知道模型有一些变更

python manage.py migrate TestModel # 创建表结构

3) 数据库操作

添加database.py文件

[python] view plain copy

from django.http import HttpResponse

from TestModel.models import Test

def database(request):

test = Test(name='Alice')

test.save()

return HttpResponse("

数据添加成功!

")

修改 urls.py:

view plain copy

from django.conf.urls import *

from . import view,database

urlpatterns = [

url(r'^hello$',view.hello),

url(r'^database$',database.database)

]

启动服务器,并在浏览器访问:127.0.0.1:8000/database。

① 添加数据

[python] view plain copy

from django.http import HttpResponse

from TestModel.models import Test

def database(request):

test = Test(name='Alice')

test.save()

return HttpResponse("

数据添加成功!

")

② 获取数据

[python] view plain copy

from django.http import HttpResponse

from TestModel.models import Test

def database(request):

# 初始化

response = ""

response1 = ""

# 通过objects这个模型管理器的all()获得所有数据行,相当于sql中的SELECT * FROM

list = Test.objects.all()

# filter相当于sql中的WHERE,可设置条件过滤结果

response2 = Test.objects.filter(id=1)

# 获取单个对象

response3 = Test.objects.get(id=1)

# 限制返回的数据,相当于sql中的OFFSET 0 LIMIT 2;

Test.objects.order_by('name')[0:2]

# 数据排序

Test.objects.order_by("id")

# 上面的方法可以连锁使用

Test.objects.filter(name="Alice").order_by("id")

# 输出所有数据

for var in list:

response1 += var.name + " "

response = response1

return HttpResponse("

" + response + "

")

③ 更新数据

[python] view plain copy

from django.http import HttpResponse

from TestModel.models import Test

def database(request):

# 修改id=1的name字段再save,相当于sql中的UPDATE

test = Test.objects.get(id=1)

test.name='Alice'

test.save()

# 另一种方式

# Test.objects.filter(id=1).update(name='Alice)

# 修改所有的列

# Test.objects.all()..update(name='Google')

return HttpResponse("

数据修改成功

")

④ 删除数据

删除数据库中的对象只需调用该对象的delete()方法即可:

[python] view plain copy

from django.http import HttpResponse

from TestModel.models import Test

def database(request):

# 删除id=1的数据

test = Test.objects.get(id=1)

test.delete()

# 另外一种方式

# Test.objects.filter(id=1).delete()

# 删除所有数据

# Test.objects.all().delete()

return HttpResponse("

数据删除成功

")

8、Django表单

1) Get方法

① 创建一个 search.py 文件,用于接收用户的请求:

[python] view plain copy

from django.http import HttpResponse

from django.shortcuts import render_to_response

# 表单

def search_form(request):

return render_to_response('search_form.html')

# 接收请求数据

def search(request):

request.encoding='utf-8'

if 'q' in request.GET:

message = '搜索内容为: ' + request.GET['q'].encode('utf-8')

else:

message = '提交了空表单'

return HttpResponse(message)

② 在templates中添加 search_form.html 表单:

[html] view plain copy

<Meta charset="utf-8">

搜索">

③ 修改urls.py:

[python] view plain copy

from django.conf.urls import url

from . import view,database,search

urlpatterns = [

url(r'^helloWorld$',view.helloWorld),database.database),

url(r'^search-form$',search.search_form),

url(r'^search$',search.search)

]

④ 启动服务器,并在浏览器访问:127.0.0.1:8000/search_form。

2) Post方法

① 在templates中添加 post.html 表单:

[python] view plain copy

<Meta charset="utf-8">

{% csrf_token %}

搜索">

{{ rlt }}

{% csrf_token %}标签:csrf 全称是 Cross Site Request Forgery,这是Django提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签

② 新建 search2.py 文件并使用 search_post 函数来处理 POST 请求:

[python] view plain copy

from django.shortcuts import render

from django.views.decorators import csrf

# 接收POST请求数据

def search_post(request):

ctx ={}

if request.POST:

ctx['rlt'] = request.POST['q']

return render(request,"post.html",ctx)

③ 修改urls.py:

[python] view plain copy

from django.conf.urls import url

from . import view,search.search)

url(r'^search-post$',search2.search_post)

]

④ 启动服务器,并在浏览器访问:127.0.0.1:8000/search_post

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我最近重新拾起了计算机视觉,借助Python的opencv还有face_recognition库写了个简单的图像识别demo,额外定制了一些内容,原本想打包成exe然后发给朋友,不过在这当中遇到了许多小问题,都解决了,记录一下踩过的坑。 1、Pyinstaller打包过程当中出现warning,跟d
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体操作如下图: 结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,
记得大一学Python的时候,有一个题目是判断一个数是否是复数。当时觉得比较复杂不好写,就琢磨了一个偷懒的好办法,用异常处理的手段便可以大大程度帮助你简短代码(偷懒)。以下是判断整数和复数的两段小代码: 相信看到这里,你也有所顿悟,能拓展出更多有意思的方法~
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic histogram2. 数据分布与密度信息显示 Control rug and density on seaborn histogram3. 带箱形图的直方图 Histogram with a boxplot on t
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic violinplot2. 小提琴图样式自定义 Custom seaborn violinplot3. 小提琴图颜色自定义 Control color of seaborn violinplot4. 分组小提琴图 Group
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic density plot2. 核密度图的区间控制 Control bandwidth of density plot3. 多个变量的核密度图绘制 Density plot of several variables4. 边
首先 import tensorflow as tf tf.argmax(tenso,n)函数会返回tensor中参数指定的维度中的最大值的索引或者向量。当tensor为矩阵返回向量,tensor为向量返回索引号。其中n表示具体参数的维度。 以实际例子为说明: import tensorflow a
seaborn学习笔记章节 seaborn是一个基于matplotlib的Python数据可视化库。seaborn是matplotlib的高级封装,可以绘制有吸引力且信息丰富的统计图形。相对于matplotlib,seaborn语法更简洁,两者关系类似于numpy和pandas之间的关系,seabo
Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件。 文章目录 1 介绍1.1 Python ConfigParser读取文件1.2 Python ConfigParser中的节1.3 Python ConfigParser从字符串中读取数据
1. 处理Excel 电子表格笔记(第12章)(代码下载) 本文主要介绍openpyxl 的2.5.12版处理excel电子表格,原书是2.1.4 版,OpenPyXL 团队会经常发布新版本。不过不用担心,新版本应该在相当长的时间内向后兼容。如果你有新版本,想看看它提供了什么新功能,可以查看Open
1. 发送电子邮件和短信笔记(第16章)(代码下载) 1.1 发送电子邮件 简单邮件传输协议(SMTP)是用于发送电子邮件的协议。SMTP 规定电子邮件应该如何格式化、加密、在邮件服务器之间传递,以及在你点击发送后,计算机要处理的所有其他细节。。但是,你并不需要知道这些技术细节,因为Python 的
文章目录 12 绘图实例(4) Drawing example(4)1. Scatterplot with varying point sizes and hues(relplot)2. Scatterplot with categorical variables(swarmplot)3. Scat
文章目录 10 绘图实例(2) Drawing example(2)1. Grouped violinplots with split violins(violinplot)2. Annotated heatmaps(heatmap)3. Hexbin plot with marginal dist
文章目录 9 绘图实例(1) Drawing example(1)1. Anscombe’s quartet(lmplot)2. Color palette choices(barplot)3. Different cubehelix palettes(kdeplot)4. Distribution
Python装饰器教程展示了如何在Python中使用装饰器基本功能。 文章目录 1 使用教程1.1 Python装饰器简单示例1.2 带@符号的Python装饰器1.3 用参数修饰函数1.4 Python装饰器修改数据1.5 Python多层装饰器1.6 Python装饰器计时示例 2 参考 1 使
1. 用GUI 自动化控制键盘和鼠标第18章 (代码下载) pyautogui模块可以向Windows、OS X 和Linux 发送虚拟按键和鼠标点击。根据使用的操作系统,在安装pyautogui之前,可能需要安装一些其他模块。 Windows: 不需要安装其他模块。OS X: sudo pip3
文章目录 生成文件目录结构多图合并找出文件夹中相似图像 生成文件目录结构 生成文件夹或文件的目录结构,并保存结果。可选是否滤除目录,特定文件以及可以设定最大查找文件结构深度。效果如下: root:[z:/] |--a.py |--image | |--cat1.jpg | |--cat2.jpg |
文章目录 VENN DIAGRAM(维恩图)1. 具有2个分组的基本的维恩图 Venn diagram with 2 groups2. 具有3个组的基本维恩图 Venn diagram with 3 groups3. 自定义维恩图 Custom Venn diagram4. 精致的维恩图 Elabo
mxnet60分钟入门Gluon教程代码下载,适合做过深度学习的人使用。入门教程地址: https://beta.mxnet.io/guide/getting-started/crash-course/index.html mxnet安装方法:pip install mxnet 1 在mxnet中使
文章目录 1 安装2 快速入门2.1 基本用法2.2 输出图像格式2.3 图像style设置2.4 属性2.5 子图和聚类 3 实例4 如何进一步使用python graphviz Graphviz是一款能够自动排版的流程图绘图软件。python graphviz则是graphviz的python实