2013-01-07 68 views
1

我遇到了下面这行代码通过与其中的空间争论的问题。Django模板中的url模式处理url中的空格arg

<a href="{% url graph_exercisename exercise_name=e.exercisename|slugify %}" class="button" >Graph</a> 

当我将上面的代码片段从html文件中剪切出来时,页面编译得很好。它还编译何时将没有空格的arg传递给exercise_name。

这里是我的URL模式

urlpatterns = patterns('', 
url('^exercises/(\d{1,6})/$', exercises,name='displayexercises'), 
url('^workouts/$',workouts,name="displayworkouts"), 
url('^graph/$',bodyweight_graph), 
url('^graph/(?P<exercise_name>\w+)/$',graph_exercisename,name="graph_exercisename"), 
) 

最后的观点:

def graph_exercisename(request,exercise_name): 
    exercise_name = exercise_name.replace('-'," ").title() 

    exercises = Exercise.objects.filter(workout__user=request.user.id).filter(exercisename = exercise_name) 
    exercises = exercises.order_by('workout__workoutdate')[:10] 
    values = Rep_Table(exercises).table 

    return render(request,'graph.html',{'values':values}) 

什么是更奇怪的是,Django是不是给我的错误页面上的任何代码的话,那只是说Django遇到错误。

感谢您的帮助!

+0

和您确信此行是罪犯?你有没有试过'{%load url from future%} {%url'graph_exercisename'exercise_name = e.exercisename | slugify%}'? – Thomas

+0

我知道页面显示时,我将该行代码切出页面。该片段有什么作用? –

+0

该代码段使用“新”风格的url标签,它可能修复了管道参数。至少值得一试。 – Thomas

回答

2

请更改您的网址进入:

url('^graph/(?P<exercise_name>\w+)/$',graph_exercisename,name="graph_exercisename"), 

到:

url('^graph/(?P<exercise_name>[^/]+)/$',graph_exercisename,name="graph_exercisename"), 
+0

这工作,但我不知道为什么。你能否进一步阐述? –

+0

正如你在[Python RE](http://docs.python.org/2/library/re.html)(http://docs.python.org/2/library/re.html)上看到的那样,由于'\ w +'它会忽略减号字符( - ),而'slugify '过滤器使用这个字符来替换空格。 –