在Django中将URL字符串分配给变量

时间:2013-03-06 20:43:12

标签: python django

从我可以看到有两种方法可以在URL中使用字符串。通过使用URLConf或通过request.GET.get。

我试图使用request.GET.get方法并尝试在URL上签名后捕获字符串,例如www.domain.co.uk/macoui=001100

URL配置

url(r'^macoui=\d{6}$', 'domain.views.output'),

查看

def output(request):
    if request.method == 'GET':
       request.GET.get('macoui', '')
       return render_to_response('template.html', {'response': '\'%s\' % (macoui)}, context_instance=RequestContext(request))

当我运行时,我收到一条错误,上面写着“无需重复”。

谢谢,

3 个答案:

答案 0 :(得分:1)

这里有很多错误。

你已经正确地说过有两种获取参数的方法,然后将它们两者混淆。如果你在urlconf中匹配的东西,那么你不使用request.GET来获取它们。无论如何,request.GET仅适用于查询字符串参数 - 也就是www.domain.co.uk/?param=value形式的网址,其中?是必要的部分。

如果您的网址确实是www.domain.co.uk/macoui=001100 - 没有? - 那么您需要修改正则表达式,如下所示:

url(r'^macoui=(?P<macaoui>\d{6})$', 'domain.views.output'),

以及您的观点如下:

def output(request, macaoui):

但是,如果 - 更有可能 - 您的网址为www.domain.co.uk/?macoui=001100 - 带有问号 - 那么您的网址应该是:

url(r'^$', 'domain.views.output'),

,您的观点变为:

def output(request):
   macaoui = request.GET.get('macoui', '')

答案 1 :(得分:0)

我相信你在这一行有问题:

{'response': '\'%s\' % (macoui)}

当你逃离最后一个撇号时,整个字符串永远不会被关闭。你最好使用其他字符串分隔符:

{'response': "'%s'" % (macoui)}
祝你好运。

答案 2 :(得分:-1)

你应该这样做。

url(r'^/.*', 'domain.views.output'),

然后使用网址www.domain.co.uk/?macoui=001100

你的例子上的URL在请求uri之后是什么不合适的获取参数(request.GET)跟在'?'之后