2013-01-07 113 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 '過濾器使用這個字符來替換空格。 –