创建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 = 18address = '广西''''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):# 重定向到自己项目中的urlreturn 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),

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贝叶斯优化的门控循环神经网络BO-GRU(时序预测)的Matlab实现

贝叶斯优化的门控循环神经网络&#xff08;BO-GRU&#xff09;是一种结合了贝叶斯优化&#xff08;Bayesian Optimization, BO&#xff09;和门控循环单元&#xff08;Gated Recurrent Unit, GRU&#xff09;的模型&#xff0c;旨在进行时序预测。这种模型特别适用于时间序列数…

计算机网络概述(接入网和物理媒体)

一、接入网和物理媒体 将终端系统连接到边缘路由器的途径&#xff1a; 住宅接入网、机构接入网络、移动接入网络。 1.接入网:家庭网络 &#xff08;1&#xff09;Dial-up&#xff08;拨号&#xff09; Modem 将上网数据调制加兹安音频信号上在电话线是哪个传输&#xff0c;在…

VBA(学习笔记)

1. 数据类型 变量定义&#xff1a;Dim 变量名 As 数据类型 变量赋值&#xff1a;变量名 值 1.1 数值型 1.1.1 整数 (1) Byte&#xff1a;1字节&#xff08;0~255&#xff09; (2) Integer&#xff1a;2字节&#xff08;-32768~32767&#xff09; (3) Long&#xff1a;4…

【网络应用层协议】【MQTT】详解消息队列遥测传输协议MQTT(超详细)

目录 1. MQTT 协议简介 2. MQTT 的特点 3. MQTT 协议原理 4. MQTT协议中的订阅、主题、会话 1. MQTT 协议简介 MQTT&#xff08; Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议 &#xff09;是一种消息列队传输协议&#xff0c;采用订阅、发布机制&…

arcgis栅格数据处理3——定义投影(同样适用于其他类型文件)

进行数据连接时可能出现未设置投影无法链接的情况&#xff0c;需要先定义投影 点击最右侧“目录”&#xff0c;弹出带有系统工具的面板&#xff0c;点击“data management tools”点击“投影”&#xff0c;“定义投影”

Redis的缓存穿透?缓存击穿?缓存雪崩?

缓存穿透 什么是缓存穿透&#xff1f; 假如我们有一个学生表一共有10条数据&#xff0c;对应的id为1-10。我们有一个请求是通过id去查询学生的信息。正常的流程是请求先到redis里面去找&#xff0c;如果命中就将查询到的结果反回&#xff0c;如果没有就去mysql数据库中找&…

chatgpt与人类有何不同?

ChatGPT和人类之间存在多个显著的差异。 首先&#xff0c;ChatGPT是一种基于人工智能技术的计算机程序&#xff0c;通过机器学习和自然语言处理等技术&#xff0c;从大量的数据中获取知识并生成语言输出。它主要依赖于算法和数据进行工作&#xff0c;能够迅速处理和检索信息&a…

OpenCV(六)——对于图片的算术运行、图片的叠加操作、多通道图像拆分为多个单通道图像

在OpenCV中&#xff0c;可以对于图片进行算法运算。我们知道&#xff0c;图像的本质其实就是矩阵&#xff0c;因此对于图像的算数运算本质上就是对于矩阵的算术运算。在OpenCV可以对图像进行算术运算的操作有加、减、乘、除等操作。 图像的加、减、乘、除操作 两张图像可以进…

微信小程序开发系列(二十六)·小程序运行机制(启动、前后台状态、挂起、销毁)和小程序更新机制

目录 1. 小程序运行机制 1.1 启动 1.2 前台和后台状态 1.3 挂起 1.4 销毁 2. 小程序更新机制 1. 小程序运行机制 1.1 启动 小程序启动可以分为两种情况&#xff0c;一种是冷启动&#xff0c;一种是热启动。 冷启动&#xff1a;如果用户首次打开&#xff0c;或小…

数据挖掘案例分析、经典案例、技术实现方案

1.数据挖掘案例分析 数据挖掘&#xff1a;是从大量数据中发现有用信息和模式的过程。 数据挖掘案例分析&#xff1a;是指通过对已有数据进行挖掘和分析&#xff0c;发现其中的模式和规律&#xff0c;并根据这些发现提出相应的解决方案和决策建议的过程。 以下是一些常见的数据…

Java中交集、并集、差集、补集

一、交集 //交集Testpublic void intersection(){//向集合中添加元素ArrayList<String> datas new ArrayList<>();Collections.addAll(datas, "张三", "李四", "王五", "赵六");//向集合中添加元素ArrayList<String&…

03-快速上手RabbitMQ的5种消息模型

RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件,有几个常见概念 connections(连接): 将来publisher(消息的发送者)或者consumer(消息的接收者)都需要先与MQ建立连接 channel(通道): 建立连接后需要创建通道,生产者和消费者就是基于通道完成消息的发送和接收 ex…

django自定义表单

文章目录 django自定义表单两种方式自定义错误信息widgets实例化和初始化处理用户提交的数据验证表单通用类试图使用表单Formset django自定义表单 两种方式 继承Form类继承ModelForm类 from django import forms from .models import Contact# 自定义表单字段 class Contac…

_note_06

1.说一说函数的按地址传递和按值传递&#xff0c;他们的区别是什么&#xff1f; 函数的参数传递方式可以分为按地址传递&#xff08;也称为按引用传递&#xff09;和按值传递两种方式。按值传递是指将实际参数的值复制给形式参数&#xff0c;即在函数调用时&#xff0c;实际参数…

探索云原生数据库技术:构建高效可靠的云原生应用

数据库是应用开发中非常重要的组成部分&#xff0c;可以进行数据的存储和管理。随着企业业务向数字化、在线化和智能化的演进过程中&#xff0c;面对指数级递增的海量存储需求和挑战以及业务带来的更多的热点事件、突发流量的挑战&#xff0c;传统的数据库已经很难满足和响应快…

2023年终总结——跌跌撞撞不断修正

目录 一、回顾1.一月&#xff0c;鼓足信心的开始2.二月&#xff0c;焦躁不安3.三月&#xff0c;路还是要一步一步的走4.四月&#xff0c;平平淡淡的前行5.五月&#xff0c;轰轰烈烈的前行6.六月&#xff0c;看事情更底层透彻了7.七月&#xff0c;设计模式升华月8.八月&#xff…

04hive数仓内外部表复杂数据类型与分区分桶

hive内部表和外部表 默认为内部表&#xff0c;外部表的关键字 &#xff1a;external内部表&#xff1a;对应的文件夹就在默认路径下 /user/hive/warehouse/库名.db/外部表&#xff1a;数据文件在哪里都行&#xff0c;无须移动数据 # students.txt 1,Lucy,girl,23 2,Tom,boy,2…

Python实战:Python常用IDE选择

在Python编程的旅程中&#xff0c;选择一个合适的开发环境至关重要。本文将详细介绍三种流行的Python开发环境&#xff1a;PyCharm、VS Code和Jupyter Notebook。我们将探讨它们的特点、安装步骤、基本使用方法&#xff0c;并通过具体的代码示例来展示如何在这些环境中编写和运…

Python中,括号内部的for循环(列表推导式)

在Python中&#xff0c;括号内部的for循环通常用于列表推导式&#xff08;list comprehension&#xff09;&#xff0c;这是一种简洁创建列表的方式。列表推导式可以使用任何可迭代对象内的元素来创建新的列表元素。 列表推导式的基本语法结构如下&#xff1a; [expression f…

Kafka的分区机制

Kafka的分区机制是其核心功能之一&#xff0c;旨在提高可扩展性和并行处理能力。下面概述了Kafka分区的基本概念和工作原理&#xff1a; Kafka分区基本概念 分区&#xff08;Partition&#xff09;&#xff1a;Kafka中的主题&#xff08;Topic&#xff09;可以细分为多个分区…