我有一個視圖create_rating
在提交表單後,我希望在視圖上處理rating_upload
,然後我想重定向回create_rating
視圖。不能似乎得到它的工作,我的最新代碼如下。我想當我點擊submit
在create-rating
頁面上,它應該發送video_id
到rating_upload
,然後從那裏我可以將它作爲參數發送回create_rating
。文檔也顯示了這一點。我試過幾件事情最新的錯誤是什麼我已經表明..傳遞參數以反向查看django
網址:
urlpatterns = [
url(r'^upload', UploadVideo.as_view(), name='upload'),
url(r'^(?P<pk>[0-9]+)/$', VideoView.as_view(), name='videoview'),
url(r'^(?P<video_id>\d+)/create_rating', create_rating, name='create_rating'),
url(r'^(?P<video_id>\d+)/rating_upload', rating_upload, name='rating_upload'),
url(r'^(?P<video_id>\d+)/rating_uploaded', rating_upload, name='rating_upload')
]
觀點:
def create_rating(request, video_id):
vid = get_object_or_404(Video, pk=video_id)
past_ratings = vid.rating.order_by('date_created')[:5]
template = loader.get_template('create_rating.html')
context = {
'vid': vid, 'past_ratings': past_ratings
}
return HttpResponse(template.render(context, request))
def rating_upload(request, video_id):
template = loader.get_template('rating_upload.html')
rated_video = Video.objects.get(pk=video_id)
context = {
'rated_video': rated_video
}
return HttpResponseRedirect(reverse('create_rating', video_id))
模板,create_rating.html
:
<p>{{ vid.title }}</p>
<form action="{% url 'rating_upload' vid.pk %}" method="post">
{% csrf_token %}
<input type="text" name="rate_comment">
<input type="submit" value="Rate Video">
最新的錯誤:
Request Method: POST
Request URL: http://127.0.0.1:8000/video/32/rating_uploaded
Django Version: 1.10.5
Python Version: 2.7.10
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'video']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/Users/RyanHelling/virtualenvs/env1/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/Users/RyanHelling/virtualenvs/env1/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/Users/RyanHelling/virtualenvs/env1/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/RyanHelling/PycharmProjects/flash2/video/views.py" in rating_upload
63. return HttpResponseRedirect(reverse('create_rating', video_id))
Exception Type: TypeError at /video/32/rating_uploaded
Exception Value: an integer is required
'TypeError at/video/32/rating_uploaded an integer is required'錯誤反饋看起來像是它獲取了video這個詞,並試圖將它映射到一個id,當它不應該。我沒有看到/視頻/在任何地方的路線,所以我不知道它從哪裏得到的?你是否在任何地方使用命名空間或導入URL? – davidejones
嗨,是的,我是進口的網站到一個級別以上是'視頻' – ratrace123