Django基础Django入门
Posted Ricky_0528
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django基础Django入门相关的知识,希望对你有一定的参考价值。
文章目录
1. Django项目的创建
django-admin[.py] startproject my_project
2. Django项目目录结构
- my_project # 项目目录
- __init__.py # 包的入口文件
- settings.py # 项目配置文件
- urls.py # url访问地址配置文件
- wsgi.py # 部署配置
- asgi.py # 部署配置
- db.sqlite3 # sqllite数据库
- manage.py # 命令行管理工具
3. 开发流程
3.1 启动开发服务器
python manage.py runserver
runserver常用参数
指定端口
python manage.py runserver 9527
指定及端口
需要在settings.py配置ALLOWED_HOSTS
python manage.py runserver 0.0.0.0:9527
3.2 创建模块
例如创建一个hello模块
python manage.py startapp hello
3.3 完成第一个页面
- 在views.py文件写个函数
- 在urls.py配置规则
4. 从请求到响应
视图函数的作用:接收一个请求,返回一个响应
4.1 URL的设计
设计简单优雅的URL
- 使用正则表达式
- 指定参数类型
# 固定的URL类型,字符串
# /hello
path('hello/', hello_world)
# 指定参数类型
# /article/5000
path('/article/<int>', article)
# 使用正则表达式
4.2 URL的常用配置
path (route, view, name, **kwargs)
函数- route:URL匹配规则
- view:视图函数
- name:路由的名称(可选)
- **kwargs:其他参数
include (urls, namespace)
函数- urls:URL匹配规则列表
- namespace:命名空间
setting.py里面的ROOT_URLCONF
表示根路径下的URL配置规则指定到的位置是哪一个urls
根路径下的urls.py
from django.contrib import admin
from django.urls import path, include
from hello.views import hello_world
urlpatterns = [
path('admin/', admin.site.urls),
# 固定的URL类型,字符串
# /hello
# path('hello/', hello_world)
# 指定参数类型
# /article/<int>
# /article/50001
# 使用正则表达式
path('hello/', include('hello.urls'))
]
模块下的urls.py
from django.urls import path
from hello.views import hello_world, hello_china
urlpatterns = [
path('world/', hello_world, name='hello_world'),
path('china/', hello_china, name='hello_china')
]
这样就将这两个路径整合起来了,hello下有两个页面world和china
http://192.168.1.5:9527/hello/world/
http://192.168.1.5:9527/hello/china/
4.3 URL与视图的关系
-
URL的正向解析
通过URL解析URL规则找到视图函数
-
URL的逆向解析(通过视图函数的name来解析,可用于重定向等等)
通过视图函数的视图名+参数解析到URL
4.4 小结
视图函数响应的内容可以是:文本、html内容、图像、甚至是404、重定向等等
视图是一个Python函数,用来处理http请求
通过path和include配置,将URL和视图函数关系建立起来
5. 在视图中处理业务逻辑
5.1 响应HTML内容
def hello_html(request):
html = """
<html>
<body>
<h1 style="color:#f00">hello</h1>
</body>
</html>
"""
return HttpResponse(html)
5.2 获取URL参数
-
获取URL中的指定类型的参数
path('article/<int:month>/', article_list, name='article_list') def article_list(request, month): ''' :param month:今年某一个月的文章列表 ''' return HttpResponse(f'article: month')
-
获取URL中的正则匹配的参数
re_path(r'^article/(?P<month>0?[1-9]|1[012])/$', article_list, name='article_list') def article_list(request, month): ''' :param month:今年某一个月的文章列表 ''' return HttpResponse(f'article: month')
5.3 获取GET参数
-
获取请求中(GET/POST等)参数
http://192.168.1.5:9527/hello/search/?search=ricky def search(request): content = request.GET.get('search', None) return HttpResponse(content)
以上是关于Django基础Django入门的主要内容,如果未能解决你的问题,请参考以下文章