首页 > 其他分享 >Django路由

Django路由

时间:2024-09-11 11:25:13浏览次数:8  
标签:app py django urls path login Django 路由

一、路由定义

URL与Django视图建立映射关系,根据用户请求的URL链接来判断对应的处理程序,并返回处理结果

二、使用步骤

1.路由使用

# path:用于普通路径,不需要自己手动添加正则首位限制符号,底层已添加
# 普通路径
path('index', views.index), 

# from django.urls import re_path # 用re_path 需要引入
# re_path:用于正则路径,需自己手动添加正则首位限制符号
# 正则路由
re_path(r'^articles/([0-9]{4})/$', views.articles), 

2.路由分发(include)

问题:多个app目录共用一个urls.py容易造成混淆,不便于维护
解决:使用路由分发(include),让每个app目录都单独拥有自己的urls
步骤:
1、在每个app目录里都创建一个urls.py文件
2、在项目名称目录下的urls文件里,统一将路径分发给各个app目录
在之前项目里面生成了一个Testmodel文件夹(创建命令django-admin startapp TestModel),里面有个apps.py

from django.apps import AppConfig


class TestmodelConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'TestModel' #与文件夹名称一致

然后我们在settings.py里面注册一下,在INSTALLED_APPS 里面添加内容

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'TestModel', # 确保这里的名称与 apps.py 中的 name 属性一致
]

在TestModel中新增一个urls.py

from django.urls import path,re_path # 导入 path 和 re_path
from . import views # 导入 views 模块

app_name = 'test'  # 这里的 app_name 是用于 URL 命名空间
urlpatterns = [ 
    # re_path(r'^login', views.index, ),
    path('login', views.login, name='login'),# name="路由别名"。
]

TestModel中的views.py内容

from django.shortcuts import render

# Create your views here.
def login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        if username == 'admin' and password == 'password':
            return render(request, 'login.html', {'res': 'Login Success'})
        else:
            return render(request, 'login.html', {'res': 'Invalid Username or Password'})
    return render(request, 'login.html')

templates文件夹下新增login.html

<!DOCTYPE html>
<html>
<head>
	<title>Login Page</title>
</head>
<body>
	<h1>Login Page</h1>
	<form method="post" action="">
	#这里还可以使用路由别名 <form method="post" action="{% url 'test:login' %}">
		{% csrf_token %}
		<label for="username">Username:</label>
		<input type="text" id="username" name="username" required><br><br>
		<label for="password">Password:</label>
		<input type="password" id="password" name="password" required><br><br>
		<input type="submit" value="Login">
	</form>
    <p>{{res}}</p>
</body>
</html>

外层的urls.py内容如下

from django.contrib import admin
from django.urls import path

# 从 django.urls 引入 include
from django.urls import include, re_path, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test/', include('TestModel.urls')),  # 包含 TestModel 应用的 URL 配置,在TestModel的urls.py中定义了app_name = 'test',使用方法 include("app名称:urls","app名称")
]

访问地址http://127.0.0.1:8000/test/login,这里指定到了test下面的login
在这里插入图片描述
点击登录后的效果
在这里插入图片描述

标签:app,py,django,urls,path,login,Django,路由
From: https://blog.csdn.net/weixin_42695345/article/details/142101921

相关文章

  • Django视图
    一、视图是什么视图函数,接受Web请求并且返回Web响应二、常用的request属性1、GET项目index.py添加方法:defrequest_get(request):#get():返回字符串,如果该键对应有多个值,取出该键的最后一个值#getlist():返回列表,如果该键对应有多个值,取出所有值......
  • 计算机毕业设计PySpark+Django深度学习游戏推荐系统 游戏可视化 游戏数据分析 游戏爬
    在撰写《PySpark+Django深度学习游戏推荐系统》的开题报告时,建议包括以下内容:###1.研究背景与意义在数字娱乐行业中,游戏推荐系统成为提升用户体验的关键工具。现有的推荐系统大多基于用户行为数据进行推荐,但随着数据量的急剧增加和数据复杂性的提升,传统的推荐算法面临挑战......
  • 解决路由缓存问题
    路由缓存问题即:当再vue3中使用带参数的路由时,随着路由跳转,组件被重新复用,不能正常执行生命周期尤其我们通常在onMounted中使用的请求的发送,那么如何解决呢1.粗暴的方法:强制替换销毁vue官方曾说,key可以强制替换一个元素或者组件,而不是复用它那么我们可以在组件中使用ke......
  • 初学者指南:掌握 Vue 路由(Router)
    初学者指南:掌握Vue路由(Router)在现代前端开发中,单页面应用(SPA)越来越受欢迎,而Vue.js是构建SPA的热门选择之一。在Vue应用中,路由管理是实现页面导航的关键。本文将带你一步步了解如何在Vue应用中使用路由。什么是路由?在Web应用中,路由是URL到页面内容的映射。......
  • React路由配置参考(记录)
    整体:登录页单独处理:将登录页单独处理,路径为/login。使用AuthLayout处理授权页面:AuthLayout可以作为一个高阶组件,确保用户登录后才能访问系统中的其他页面。加载主布局BasicLayout:BasicLayout可以用来加载系统的主布局,并通过routesRender(routesConfig)渲染配置文件中......
  • 基于django+vueblockly少儿编程在线学习网站【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,编程教育逐渐从高等教育向基础教育渗透,成为培养未来社会创新人才的重要途径。少儿编程作为这一趋势的前沿阵地,其重......
  • 基于django+vueATM自动取款机系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和金融服务的日益普及,自动取款机(ATM)系统已成为现代银行服务不可或缺的一部分。ATM系统不仅极大地提升了金融交易的......
  • 基于Python django旅游网站系统【041】
    基于Pythondjango旅游网站系统【041】【开发工具】1.数据库:mysql2.开发工具:pycharm等python开发工具均可【技术简介】前端bootstrap样式数据存mysqldjango框架【功能说明】1.用户登录注册2.首页展示、热门推荐、猜你喜欢、景点介绍等等3.景点评论、打分、收藏4.旅......
  • 基于python Django音乐网站系统【042】
    基于pythonDjango音乐网站系统【042】【开发工具】1.数据库:mysql2.开发工具:pycharm等python开发工具均可【技术简介】前端bootstrap样式数据存mysqldjango框架【功能说明】1.用户登录2.首页展示、热门推荐、热门下载3.景点评论、打分、收藏4.歌曲详情、歌曲播放、......
  • 鸿蒙OS模块化开发实战:独立路由与解耦策略
    前言在现代软件开发中,模块化设计是提高项目可维护性和可扩展性的关键。鸿蒙OS以其先进的架构设计,为开发者提供了强大的模块化开发工具。本文将深入探讨如何在鸿蒙OS中实现模块的独立路由配置,以降低模块间的耦合度,实现单模块的独立运行和开发。一、架构设计概述一个清晰的......