首页 体育世界正文

1、Django简介

Python下有多款不同的 Web 结构,Django是最有代表性的一种。许多成功的网站和APP都依据Django。

Django是一个开源的Web运用结构,由Python写成。

Django采用了MVC的软件规划形式,即模型M,视图V和控制器C。

2、Django的特色

1) 强壮的数据库功用:用python的类承继,几行代码就能够具有一个动态的数据库操作API,假如需求也能履行SQL句子。

2) 自带的强壮的后台功用:几行代码就让网站具有一个强壮的后台,轻松办理内容。

3) 高雅的网址:用正则匹配网址,传递到对应函数。

4) 模板体系:强壮,易扩展的模板体系,规划简易,代码和款式分隔规划,更易办理。

5) 缓存体系:与memcached或其它缓存体系联用,体现更超卓,加载速度更快。

6) 国际化:彻底支撑多言语运用,答应你界说翻译的字符,轻松翻译成不同国家的言语。

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 的开关,静态文件的方位等。

4、Django根本指令

1) 新建一个项目:

  1. django-admin.py startproject project-name

在 windows 上假如报错,尝试用 django-admin 替代 django-admin.py 。

2) 新建李教授抗寒蚊子被判刑一个APP:

  1. python manage.py startapp app-name

  1. django-admin.py startapp app-name

一般一个项目有多个app, 当然通用的app也能够在多个项目傅莹与天边的故事假的中运用。

3) 发动服务器:

  1. python manage.py runserver 0.0.0.0:8000

  1. python manage.py runserver

前者让其它电脑可连接到服务器,监听机器上一切ip的8000端口,拜访时用电脑的ip替代 127.0.0.1(8000为端口号,假如不阐明,则端口号默以为8000);后者在本电脑拜访服务器,拜访时ip为127.0.0.1。

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
urlp八大碗,浅谈Python Django结构,古怪君atterns = [
url(r'^$', view八大碗,浅谈Python Django结构,古怪君.helloWorld)
]

发动服务器,并在浏览器拜访:127.0.0.1:8000。

修正后的urls.py:

from django.conf.urls import url 
from . import zxxxxxview
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. {% e翁虹女儿lse %}
  6. ...
  7. {% endif %}

② for 标签

{% for %} 答应在一个序列上迭代。支撑嵌套。每一次循环中,模板体系会烘托在 {% for %} 和 {% endfor %} 之间的一切内容。

  1. {% for person in list %}
  2. {{ person.name }}
  3. {% 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 "t床上相片est.html" %}

7、Django模型

Django 对各种数据库供给了很好的支撑,Django 为数据库供给了一致的调用API,能够依据事务需求挑选不同的数据库。

以MYSQL数据库为例,装置 mysql 驱动的指令:sudo pip install mysqlclient。

1) 数据库装备

在项目的settings.py文件中找到処女 DATABASES 装备项,将其信息修正为:

DATABASES = { 
'default': {
'ENGINE': 'django.db.backends.mysql', 八大碗,浅谈Python Django结构,古怪君# 或许运用 mysql.connector.django
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'test123',
'HOST':'localhost',
'PORT':'3306',
}
}

这儿增加了中文注释,所以需求在settings.八大碗,浅谈Python Django结构,古怪君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.mod刘东强在美els import Test
def database(request):
test = Test(name='Alice')
test.save()
return HttpResponse("

数据增加成功!

")

② 获取数据

[python] view plain copy

from django.http import HttpResponse 
fr凤山村的孩子om TestModel.models import Tefuliwebst
def database(request):
# 初始化
response = ""
response1 八大碗,浅谈Python Django结构,古怪君= ""
# 经过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.ob陈梦妍jects.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 HttpRe类组词sponse 
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(mes八大碗,浅谈Python Django结构,古怪君sage)

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

[html] view plain copy














③ 修正urls.py:

[python] view plain copy

from django.conf.urls import url 
from . import vi八大碗,浅谈Python Django结构,古怪君ew,database,search
urlpatterns = [
url(r'^helloWorld$', view.helloWorld),
url(r'^database$', 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









{% 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] vie仲夏幻夜w plain copy

from django.conf.urls import url 
from . import view,database,search
urlpatterns = [
url(r'^helloWorld$', view.helloWorld),
url(r'^database$', database.database),
url(r'^search-form$', search.search_form),
url(r'^search$', search.search)
url(r'^search-post$', search2.search_post)
]

④ 发动服务器,并在浏览器拜访:127.0星露谷祝尼魔小屋布局.0.1:8000/search_post。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

人体艺术,5月份我国CPI同比涨幅创15个月新高 鲜果价格处前史高位,邮箱大全

  • 教育学,Trilt拓利:API意外大增 油市暴击还未中止!,百度翻译器

  • 国窖1573,广西梧州:5天内立案查处9起违法私宰调运生猪案!,股市大盘