Django-如何在不硬编码URLS的情况下重定向用户



我正在创建Django应用程序。我们希望用户在点击按钮时被重定向到新屏幕,但我们不希望必须硬编码URL。

我们有一个顶部级别屏幕,我们希望在用户单击级别屏幕上的按钮后将其重定向到屏幕。然而,我们有多个级别屏幕,因此对级别屏幕的每个部分的每个URL进行硬编码是没有意义的。

以下是Level1屏幕的视图作为示例:

def level1(request):
return render(request, 'Levels/level/Welcome1.html')

正如您所看到的,我们呈现出Welcome1.html,但是,我们也有其他与级别1相关的欢迎屏幕,如Welcome2.htmlelcome3.html

这是级别1:的URL

path('levels/level1/', views.level1, name = "level1")

同样,对我们来说,为每个级别(级别1、级别2(提供一个URL,然后为它们提供所有子屏幕(如Welcome1、Welcome2(是没有意义的。

我如何才能将不同的屏幕与URL关联起来,而不必单独呈现它们?

我不知道该怎么做这道题。我们正在进行一个大项目,可以将部分预算交给帮助解决问题的人。

Django有一个"解析器";它允许您在urls.py 中定义动态链接

例如,动态url可以是访问/media文件夹中不同图片的一种方式。例如:host/media/{?}。这不是你在django中写它的方式,但这只是为了解释动态url背后的逻辑。在这种情况下,{?}将访问媒体文件夹中的任何文件。有点像从终端应用程序中获取参数。

特别是在你的情况下,它看起来像这样:

path('levels/level<int:num>/', views.levelHandler)

这将在级别之后写入任何整数,并将其作为参数传递给级别函数,在该函数中,您可以将其路由到脚本中的不同级别。

该功能可以看起来像这样:

def levelHandler(request, num=0):
if(num == 0): return level0(request)
if(num == 1): return level1(request)
...

这应该能解决问题。如果我遗漏了什么,我会修改答案。试试看,告诉我进展如何

相关内容

  • 没有找到相关文章

最新更新