Django url r'^ page /应该重定向到相同的动态模板后面的任何参数

时间:2015-12-17 15:52:21

标签: django django-cms

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

事实上我有:

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模板,但没有动态页面! 因此,问题是我在这个动态页面中有动态插件,我需要 - 无论测试背后是什么/ - 使用相同的动态页面。而不是模板。

不改变网址..

有办法吗?

  

编辑:

     

这是一个电话示例:   domain.org/test/1923 /

1 个答案:

答案 0 :(得分:2)

由于您希望{whatever}来自/test/{whatever},但您需要在网址中声明变量或通过{whatever}变量传递GET

在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

你总是可以这样称呼你的网址:

mydomain.org/test/?var=hithere

在你看来:

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