Django url r'^page/ 应该重定向到相同的动态模板,无论背后的参数是什么

Django url r'^page/ should redirect to the same dynamic template whatever argument behind

我的 django 网站的 url 有点问题。

其实我有:

urlpatterns = i18n_patterns('',
  url(r'^test/(?P<variable_name>\w+)/$', views.testUrl),

我创建了一个名为“test”的动态页面。经过一些处理后从视图重定向:

def testUrl(request, variable_name):
  current_site = Site.objects.get_current()
  urlTest = HttpRequest.get_full_path(request)
  parseIt = variable_name.split("/")
  ...
  for x in parseIt:
    if x == 'm':
        if ToFind[:1] == 'm':
            ID = ToFind[1:]
        else:
            ID = ToFind
        try:
            context_ret = GetId(x, api_url, ID, api_key, context_ret)
        except Exception as err:
            context_ret['message'] = err
            return render(request, 'base_templates/test.html', context_ret)
    elif x == 'z':
        try:
            context_ret = GetId(x, api_url, ToFind, api_key, context_ret)
        except Exception as err:
            context_ret['message'] = err
            return render(request, 'base_templates/test.html', context_ret)

  return render(request, 'base_templates/test.html', context_ret)

因此,如果我输入 mydomain.org/test/,我就会显示我的动态页面。完美。

但是如果我执行 mydomain.org/test/{whatever} 我会呈现 test.html 模板,但不会呈现动态页面! 因此,问题是我在这个动态页面中有动态插件,我需要 - 无论 test/ 后面是什么 - 使用相同的动态页面。而且不只是模板。

不改变 url..

有办法吗?

Edit:

here is an example of a call: domain.org/test/1923/

因为您想使用来自 /test/{whatever}{whatever} 进行 wirk,您需要在 url 中声明一个变量或通过 GET 传递 {whatever}变量。

在url中声明一个变量:

像这样改变你的url definition

...
url(r'^test/(?P<variable_name>\w+)/$', views.testUrl),
...

并在视图中捕获它:

def testUrl(request, variable_name):
    # Now if you call '/test/hithere/'
    # variable_name will take the value 'hithere'
    # you could do -> parseIt = variable_name
    ...

Passing {whatever} via GET variable

你可以随时这样称呼你url:

mydomain.org/test/?var=hithere

而在您看来:

def testUrl(request):
    parsetIt = request.GET.get('var')
    ...