百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Django教程(django教程视频)

toyiye 2024-06-30 09:39 20 浏览 0 评论

关注我并私信python可得python全套教程,私信Java可得java教程哦~

一、Django 安装

1、查看最新的正式版本 https://www.djangoproject.com/download/

2、pip install Django==2.1.7

二、创建项目

1、使用 django-admin.py(在python安装目录Scripts下)创建项目:

E:\code\python\django>d:\Python\Scripts\django-admin.py startproject HelloWorld

2、目录说明

HelloWorld: 项目的容器。

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

HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。

HelloWorld/settings.py: 该 Django 项目的设置/配置。

HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。

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

3、启动服务器:

python manage.py runserver 0.0.0.0:8000

在浏览器输入服务器的ip及端口号,如果正常启动,输出结果如下:

三、视图和 URL 配置

1、新建HelloWorld/HelloWorld/view.py

from django.http import HttpResponse
 
def hello(request):
 return HttpResponse("Hello world ! ")

2、修改HelloWorld/HelloWorld/urls.py,绑定 URL 与视图函数。

from django.conf.urls import url
from . import view
urlpatterns = [
 url(r'^
, view.hello), # url(r'^hello
, view.hello), ]

保存并刷新页面,可以看到页面已经修改

可将 url(r'^

, view.hello)修改为url(r'^hello
, view.hello)

四、模板使用

1、创建HelloWorld/templates/hello.html

<h1>{{ hello }}</h1>

2、修改HelloWorld/settings.py TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",],

TEMPLATES = [
 {
 'BACKEND': 'django.template.backends.django.DjangoTemplates',
 'DIRS': [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',
 ],
 },
 },
]

3、修改 HelloWorld/HelloWorld/view.py,增加一个新的对象,用于向模板提交数据:

# -*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
 context = {}
 context['hello'] = 'Hello World!'
 return render(request, 'hello.html', context)

再次访问 http://127.0.0.1:8000/hello 可以看到

五、Django模板标签

1、注释标签

{# 这是一个注释 #}

2、if/else 标签

{% if athlete_list and coach_list %}
 athletes 和 coaches 变量都是可用的。
{% elif condition2 %}
 ... display 1
{% else %}
 ... display 2
{% endif %}

3、for 标签

{% for athlete in athlete_list reversed %} # reversed 使得该列表被反向迭代
 <h1>{{ athlete.name }}</h1>
 <ul>
 {% for sport in athlete.sports_played %}
 <li>{{ sport }}</li>
 {% endfor %}
 </ul>
{% endfor %}

4、ifequal/ifnotequal 标签

{% ifequal user currentuser %}
 <h1>Welcome!</h1>
{% else %}
 <h1>No Welcome!</h1>
{% endifequal %}

5、过滤器

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

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

{{ name|lower }} # 将name转换为小写
{{ my_list|first|upper }} # 将第一个元素转化为大写
{{ name|truncatewords:"5" }} # 显示变量 name 的前5个词

6、include 标签

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

{% include "hello.html" %}

7、模板继承

(1)创建HelloWorld/templates/base.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Djano教程(runoob.com)</title>
</head>
<body>
 <p> Django 测试。</p>
 {% block mainbody %}
 <p>原始内容</p>
 {% endblock %}
</body>
</html>

(2)修改HelloWorld/templates/hello.html,继承base.html

{%extends "base.html" %}
<h1>{{ hello }}</h1>
{% block mainbody %}
<p>继承了 base.html 文件</p>
{% endblock %}

六、Django模型(数据库)

1、安装mysql 驱动

pip install mysqlclient

2、修改HelloWorld/HelloWorld/settings.py,文件头部添加 # -- coding: UTF-8 --

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
 'NAME': 'test',
 'USER': 'test',
 'PASSWORD': 'test123',
 'HOST':'localhost',
 'PORT':'3306',
 }
}

3、定义模型(创建 APP)

Django规定,如果要使用模型,必须要创建一个app。使用以下命令创建一个 TestModel 的 app。

E:\code\python\django\HelloWorld>d:\Python\Scripts\django-admin.py startapp TestModel

4、修改HelloWorld/TestModel/models.py

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

5、修改HelloWorld/HelloWorld/settings.py ,添加TestModel

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'TestModel', # 添加此项
]

6、创建表结构

python manage.py migrate # 创建表结构
python manage.py makemigrations TestModel # 让 Django 知道模型有一些变更
python manage.py migrate TestModel # test数据库会出现表TestModel_test

7、创建HelloWorld/HelloWorld/testdb.py

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from TestModel.models import Test
 
# 数据库操作:添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT:
def testdb(request):
 test1 = Test(name='django') # 
 test1.save()
 return HttpResponse("<p>数据添加成功!</p>")

8、修改HelloWorld/HelloWorld/urls.py

from django.conf.urls import *
from . import view, testdb
urlpatterns = [
 url(r'^hello
, view.hello), url(r'^testdb
, testdb.testdb), ]

访问 http://127.0.0.1:8000/testdb 就可以看到数据添加成功的提示:

9、数据库增删改查

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from TestModel.models import Test
# 数据库操作
def testdb(request):
 test1 = Test(name='django') # 相当于SQL中的INSERT
 test1.save()
 response = "" # 初始化
 list = Test.objects.all() # 相当于SQL中的SELECT * FROM
 # response2 = Test.objects.filter(id=1) # filter相当于SQL中的WHERE
 # response3 = Test.objects.get(id=1) # 获取单个对象
 Test.objects.order_by('name')[0:2] # 限制返回的数据,相当于 SQL 中的 OFFSET 0 LIMIT 2
 Test.objects.order_by("id") # 数据排序
 Test.objects.filter(name="django").order_by("id") # 可以连锁使用
 Test.objects.filter(id=1).update(name='Google') # 修改数据可以使用 save() 或 update()
 Test.objects.filter(id=1).delete() # 删除数据库中的对象只需调用该对象的delete()方法
 # 输出所有数据
 for var in list:
 response += var.name + " "
 return HttpResponse("<p>" + response + "</p>")

七、Django 表单

1、GET 请求

创建 /HelloWorld/HelloWorld/search.py

# -*- coding: utf-8 -*-
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'
 content = request.GET['q']
 if content != '':
 message = '你搜索的内容为: ' + content
 else:
 message = '你提交了空表单'
 return HttpResponse(message)

创建 /HelloWorld/templates/search_form.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Django教程</title>
</head>
<body>
 <form action="/search" method="get"> # action后"/search"的意思是跳转到/search页面
 <input type="text" name="q">
 <input type="submit" value="搜索">
 </form>
</body>
</html>

修改/HelloWorld/HelloWorld/urls.py

from django.conf.urls import url
from . import view,testdb,search
 
urlpatterns = [
 url(r'^hello
, view.hello), url(r'^testdb, testdb.testdb), url(r'^search-form, search.search_form), url(r'^search, search.search), ]

python manage.py runserver 0.0.0.0:8000 访问 http://127.0.0.1:8000/search-form

2、POST 请求

创建/HelloWorld/templates/post.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Django教程</title>
</head>
<body>
 <form action="/search-post" method="post">
 {% csrf_token %} {#Django提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签#}
 <input type="text" name="q">
 <input type="submit" value="Submit">
 </form>
 <p>{{ rlt }}</p> {#为表格处理结果预留位置#}
</body>
</html>

创建/HelloWorld/HelloWorld/search1.py

# -*- coding: utf-8 -*-
 
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)

修改/HelloWorld/HelloWorld/urls.py

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

查看结果 http://127.0.0.1:8000/search-post

八、python管理工具

1、登陆

修改/HelloWorld/HelloWorld/urls.py

from django.conf.urls import url
from django.contrib import admin
from . import view, testdb, search, search1
urlpatterns = [
 url(r'^hello, view.hello),
 url(r'^testdb, testdb.testdb),
 url(r'^search-form, search.search_form),
 url(r'^search, search.search),
 url(r'^search-post, search1.search_post),
 url(r'^admin/', admin.site.urls),
]

创建超级用户: python manage.py createsuperuser 登陆 http://127.0.0.1:8000/admin/

修改HelloWorld/TestModel/admin.py

from django.contrib import admin
from TestModel.models import Test
 
# Register your models here.
admin.site.register(Test)

刷新后即可看到 Testmodel 数据表

2、更复杂的数据模型:

修改 HelloWorld/TestModel/models.py

from django.db import models
 
# Create your models here.
class Test(models.Model):
 name = models.CharField(max_length=20)
 
class Contact(models.Model):
 name = models.CharField(max_length=200)
 age = models.IntegerField(default=0)
 email = models.EmailField()
 def __unicode__(self):
 return self.name
 
class Tag(models.Model):
 contact = models.ForeignKey(Contact, on_delete=models.CASCADE)
 name = models.CharField(max_length=50)
 def __unicode__(self):
 return self.name

修改 HelloWorld/TestModel/admin.py

from django.contrib import admin
from TestModel.models import Test,Contact,Tag
 
# Register your models here.
admin.site.register([Test, Contact, Tag])

创建表结构

python manage.py makemigrations TestModel # 让 Django 知道模型有一些变更
python manage.py migrate TestModel # 创建表结构

刷新页面可见:

3、自定义表单

例如添加Contacts,原始页面:

修改HelloWorld/TestModel/admin.py

from django.contrib import admin
from TestModel.models import Test,Contact,Tag
 
# Register your models here.
class TagInline(admin.TabularInline):
 model = Tag
 
class ContactAdmin(admin.ModelAdmin):
 list_display = ('name','age', 'email') # list
 search_fields = ('name',)
 inlines = [TagInline] # Inline
 fieldsets = (
 ['Main',{
 'fields':('name','email'),
 }],
 ['Advance',{
 'classes': ('collapse',),
 'fields': ('age',),
 }]
 
 )
 
admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

修改后

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码