初识Django,以及路由设置

简介: 初识Django,以及路由设置

初识Django,以及路由设置

1、创建Django项目

Django项目的创建的路径不要有中文和空格;【计算机名称不要是中文】

1、在cmd中命令进行创建Django项目
  打开存放项目的位置
  创建Django项目:django-admin startproject 项目名称(注意:项目名称不要是中文)
  启动django项目,进入到Django中的(manage.py所在的文件位置中)
  python manage.py runserver 端口号
2、在pycharm创建Django项目
  flie —— new project
  选择Django进行创建
  (pycharm有个小bug , 需要手动的在settings.py文件中导入os模块)
  
3、要实现功能的分隔 —— 创建应用(app)
  创建应用的命令:python manage.py startapp 应用名称

Django项目文件作用

DjangoDemo
|---DjangoDemo  存放的是项目的配置文件
| |--- asgi.py  异步操作的文件
| |--- settings.py   项目的配置文件
| |--- urls.py  项目的路由配置
| |--- wsgi.py  封装 socket 服务端的东西
|--- myapp
| |--- migrations 数据迁移记录
| |--- admin.py  后台管理文件
| |--- apps.py  用来注册app
| |--- models.py  用来操作数据库 ,模型
| |--- tests.py  测试文件,可以单独运行
| |--- views.py  视图文件,响应数据操作
|--- templates  存放html文件,模板文件
|--- manage.py  Django项目的执行启动文件

Django项目中的settings.py文件中的配置信息

BASE_DIR = 项目的根目录
SECRET_KEY = 秘钥, 生成随机字符,用来对数据加密
DEBUG = Django项目启动的模式,默认True:启动之后项目执行过程中有异常会抛出错误信息;是在开发和测试时使用。
    当设置为False , 表示在生产环境中启动,设置前确保ALLOWED_HOSTS的值不能为空
ALLOWED_HOSTS = 设置允许访问这个项目的ip
      [] : 空列表 表示只允许当前本地主机访问:127.0.0.1
      ['*']:表示允许所有主机访问
      ['192.168.163.21','192.168.163.74',……]:允许被指定的ip访问
INSTALLED_APPS = 注册项目中自己创建的app
MIDDLEWARE = 注册中间件使用
ROOT_URLCONF = 配置根目录级别的路由
TEMPLATES = 配置模板使用的配置引擎,以及访问模板文件的路径
WSGI_APPLICATION = 项目运行在WGSI兼容的web服务器中
DATABASES = 配置操作数据库信息
AUTH_PASSWORD_VALIDATORS = django的授权认证
LANGUAGE_CODE = 项目语言 'zh-Hans':中文
TIME_ZONE = 项目使用的时区时间,'UTC':零时区 , 'Asia/Shanghai':东八区
STATIC_URL = 静态文件配置(css , js , image)
DEFAULT_AUTO_FIELD = 默认Auto认证

注册应用

在settings.py 文件中INSTALLED_APPS列表的最后添加配置信息
写法一:'myapp.apps.MyappConfig'  [应用名称.apps.应用名称Config]
写法二:'myapp' [应用名称]

2、实现视图

视图的响应,响应功能就要写到应用的views.py文件中

def index(request):
    '''
    :param request: 接收浏览器发送的请求信息 ,视图函数必须要有的参数
    :return: HttpResponse:响应字符串信息
    '''
    return HttpResponse('大家好 , 我是帅气的靓仔阿宸')

通过 urls.py 文件中对路由和视图函数之间的映射关系进行配置,使用 path 函数对路由配置对应关系

from myapp import views
urlpatterns = [
    path('index/' , views.index),
]

响应 html 文件视图

def html_info(request):
    # 响应 html文件 需要 render
    # 返回一个含有 html 标签的字符串
    return render(request , 'info.html')
def html_get_data(request):
    # render(request , html文件 , 数据)
    # render 传入的参数数据必须以字典类型传入
    data =  {'name':'尔康' , 'age': 18 , 'address':'重庆'}
    return render(request, 'info.html' , data)
def html_get_data2(request):
    name = '叶晓春'
    age = 18
    address = '广西'
    '''
    locals() 方法: 把当前视图所在的名称空间中所有的名称全部传递到html文件中
    '''
    return render(request, 'info.html' , locals())
path('info/' , views.html_info),
path('get_data/' , views.html_get_data),
path('get_data2/' , views.html_get_data2),

路由重定向

def baidu(request):
    # rediect  重定向 , 实现url跳转
    return redirect('https://www.bilibili.com')
def myurl(request):
    # 重定向到自己项目中的url
    return redirect('/get_data2/')
def myview(request):
    # 重定向到当前视图文件内的视图函数
    return redirect(index)
path('bd/' , views.baidu),
path('my/' , views.myurl),
path('my2/' , views.myview),

3、路由

路由: 用户通过使用 url 访问网络资源,服务器会根据 URl 请求到对应的路由配置中查询对应的视图关系。

url的配置是一个列表 , 查询是在列表中个从上往下查询。

正则匹配路由:用正则分组进行匹配 , 在项目中映射正则相关的 url 的时候 , 需要用 re_path 进行配置对应的视图关系

路由的正则分组匹配

无名分组
可以匹配 url 后面的一个数据 , 传递到这个路由对应的视图函数中作为参数使用,这个参数没有指定名称
有名分组
可以匹配 url 后面的一个数据 , 传递到这个路由对应的视图函数中作为参数使用,这个参数在路由匹配的时候有指定对应的名称 , 视图函数在接收的时候必须使用指定的名称
def url_data(request , data):
    # 无名分组 , data 的数据是由 url 匹配的时候获取到的
    return HttpResponse(f'这是无名分组,接收到 url 的参数为{data}')
def url_data2(request , number):
    # number 一定要和 路由中定义的名称一致
    return HttpResponse(f'这是有名分组,接收到 url 的参数为{number}')
# 无名分组
# (正则表达式)
re_path('url_text/(\w+)/' , views.url_data),
# 有名分组 (?P<名称>正则表达式)
re_path('url_data/(?P<number>\d+)/'  , views.url_data2),


相关文章
|
5月前
|
前端开发 数据库 Python
Django项目之电商购物商城 -- 修改/删除收货地址/设置默认地址
Django项目之电商购物商城 -- 修改/删除收货地址/设置默认地址
|
Python
django路由传参可默认为空
django路由传参可默认为空
86 0
|
3月前
|
Python SEO
Django入门到放弃之路由
Django入门到放弃之路由
|
3月前
|
Python
[django]路由变量与正则表达式
[django]路由变量与正则表达式
|
5月前
|
JSON API 网络架构
Django REST framework视图集与路由详解:深入理解ViewSet、ModelViewSet与路由映射器
Django REST framework视图集与路由详解:深入理解ViewSet、ModelViewSet与路由映射器
|
5月前
|
存储 安全 网络协议
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
|
5月前
|
API 网络架构 Python
在django使用视图集和路由集
【6月更文挑战第11天】本文介绍Viewsets是Django REST框架中将多个视图逻辑整合到单个类的工具,减少了重复代码。当项目API变得复杂且有重复模式时,考虑使用它们;否则,保持视图和URL模式的简洁性。
39 3
|
5月前
|
API 数据库 网络架构
在django中应用视图和路由集
【6月更文挑战第10天】 本文介绍viewsets`和`Routers`是Django REST framework中用于简化API视图和路由的工具。它们提供了一个抽象层,允许用更少的代码替代多个相关视图,并能自动生成URL。定义`UserList`和`UserDetail`视图集,分别用于列表和详情展示。
26 3
|
5月前
|
缓存 JSON API
在django项目中使用装饰器管理路由
【6月更文挑战第12天】本文介绍了Python装饰器在API管理中的应用,包括用于延迟计算、缓存和转换函数的装饰器。实践中,以Django Rest Framework为例,演示了如何使用装饰器定义GET、POST、PUT和DELETE请求的视
56 1
|
11月前
|
前端开发 网络架构 Python
django实现动态路由的简单方法
django实现动态路由的简单方法
128 1