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')
...
我的 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')
...