目录
'AutoSchema' object has no attribute 'get_link'
'staticfiles' is not a registered tag library.
Django 简介
Django 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。
基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
Django 版本对应的 Python 版本:
Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 2.7, 3.4, 3.5 1.11 2.7, 3.4, 3.5, 3.6 2.0 3.4, 3.5, 3.6, 3.7 2.1, 2.2 3.5, 3.6, 3.7 安装
--window
首先需要安装python环境,
安装 Django:
- Django 下载地址:https://www.djangoproject.com/download/
我是直接pip install django
输入以下命令进行检查::
>>> import django >>> django.get_version()
HelloWorld
创建一个HelloWorld 项目
使用 django-admin 来创建项目,Django 3.1之前用django-admin.py
django-admin startproject HelloWorld
目录说明:
- HelloWorld: 项目的容器。
- manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
- HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
- HelloWorld/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。
- HelloWorld/settings.py: 该 Django 项目的设置/配置。
- HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
- HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
运行项目
进入 HelloWorld 目录输入命令,0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。默认为 8000
python manage.py runserver 0.0.0.0:8000
创建views文件夾,创建HelloView.py文件
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ")
打开url.py文件,复制一行urlpatterns中的path改成如下内容
path('hello/', HelloView.hello),
重启项目,访问http://localhost:8000/hello/路径
成功!
URL路由
传递参数:
使用
<int:name>
来捕获整型参数示例:path('articles/<int:year>/<int:month>/', views.month_archive),
路径转换器
str
- 匹配除了'/'
之外的非空字符串。如果表达式内不包含转换器,则会默认匹配字符串。int
- 匹配 0 或任何正整数。返回一个int
。slug
- 匹配任意由 ASCII 字母或数字以及连字符和下划线组成的短标签。比如,building-your-1st-django-site
。uuid
- 匹配一个格式化的 UUID 。为了防止多个 URL 映射到同一个页面,必须包含破折号并且字符都为小写。比如,075194d3-6885-417e-a8a8-6c931e272f00
。返回一个UUID
实例。path
- 匹配非空字段,包括路径分隔符'/'
。它允许你匹配完整的 URL 路径而不是像str
那样匹配 URL 的一部分。# URLconf from django.urls import path from . import views urlpatterns = [ path('blog/', views.page), path('blog/page<int:num>/', views.page), ] # View (in blog/views.py) def page(request, num=1): # Output the appropriate page of blog entries, according to num. ...
自定义的路径转换器:https://docs.djangoproject.com/zh-hans/3.2/topics/http/urls/
被包含的URLconf 会收到来自父URLconf 捕获的任何参数
# In settings/urls/main.py from django.urls import include, path urlpatterns = [ path('<username>/blog/', include('foo.urls.blog')), ] # In foo/urls/blog.py from django.urls import path from . import views urlpatterns = [ path('', views.blog.index), path('archive/', views.blog.archive), ]
补充
正则限制符号:^匹配要检索的文本的开头,$匹配文本的结束
Django1.1.x url() 方法需要手动添加正则首位限制符号
from django.conf.urls import url # 用 url 需要引入 urlpatterns = [ url(r'^index/$', views.index), ]
Django 2.2.x 之后的版本
- path:用于普通路径,不需要添加限制符号,底层已经添加
- re_path:用于正则路径,需要自己手动添加正则首位限制符号。与1.1.x 版本中的 url 用法相同
from django.urls import re_path # 用re_path 需要引入 urlpatterns = [ path('admin/', admin.site.urls), re_path("^index/([0-9]{4})/$", views.index), ]
请求方式
表单
from django.http import HttpResponse, QueryDict from django.shortcuts import render from django.views.decorators import csrf # 接收表单请求数据 - get def search(request): QueryDict("") request.encoding = 'utf-8' if 'q' in request.GET and request.GET['q']: message = '你搜索的内容为: ' + request.GET['q'] return HttpResponse(message) # 接收POST请求数据 def search_post(request): ctx ={} if request.POST: ctx['rlt'] = request.POST['q'] return render(request, "post.html", ctx)
页面
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>runoob.com</title> </head> <body> <form action="/search/" method="get"> <input type="text" name="q"> <input type="submit" value="搜索"> </form> <form action="/search-post/" method="post"> {% csrf_token %} <input type="text" name="q"> <input type="submit" value="搜索"> </form> </body> </html>
视图
# GET def runoob(request): name = request.GET.get("name") return HttpResponse('姓名:{}'.format(name)) # POST def runoob(request): name = request.POST.get("name") return HttpResponse('姓名:{}'.format(name)) # body def runoob(request): name = request.body print(name) return HttpResponse("菜鸟教程") # 解析请求的json格式入参 data = JSONParser().parse(request)
模板
在 HelloWorld 目录底下创建 templates 目录并建立 runoob.html文件
Python Web开发框架Django全套操作,一篇就够!!
最新推荐文章于 2024-08-14 13:54:55 发布
这篇博客详细介绍了Django框架的各个方面,从安装、HelloWorld项目创建,到URL路由、数据模型、用户认证组件和API接口文档的配置,涵盖了Django开发的全过程。此外,还讨论了Django中的模板、视图、中间件、cookie与session的使用,以及解决实际开发中遇到的问题。
摘要由CSDN通过智能技术生成