2017-02-18 6 views
0

私はビューを持っています。フォームを送信した後、ビューrating_uploadで処理してから、create_ratingビューにリダイレクトします。 Cantはそれを動作させるようですが、私の最新のコードは以下の通りです。私は、submitcreate-ratingページをクリックしてvideo_idrating_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"> 

最新のエラー私は、最新のエラーが

のURL ..私が示したものであるいくつかのことを試してみました:

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 
+0

'/ video/32/rating_uploadedに整数型が必要です.'エラーのフィードバックは、ビデオという言葉を得て、そうしてはならないときにそれをidにマップしようとしているようです。私はあなたのルートのどこにでも/ビデオ/が表示されないので、私はどこからそれを得るのか分からないのですか?どこにでも名前空間を付けたり、URLをインポートしていますか? – davidejones

+0

こんにちは私は上記のレベルのURLに 'video'をインポートしています – ratrace123

答えて

1

return HttpResponseRedirect(reverse('create_rating', args=(video_id))) 

代わりの

return HttpResponseRedirect(reverse('create_rating', video_id)) 

Documentationタプルとして、あなたの引数を渡すことを示唆してみてください。

+0

私はそれを試して、' reverse()にキーワード引数はありません。 'と答えています – ratrace123

+0

@ ratrace123、どこから逆をインポートしますか?あなたのエラーのために私は[this](http://stackoverflow.com/questions/42173580/django-tutorial-typeerror-at-polls-3-vote-reverse-takes-no-keyword-argumen)の質問とそれは誤ったインポートに関するものです。ドキュメントによると、reverseには、reverse(viewname、urlconf = None、args = None、kwargs = None、current_app = None)という5つの引数があります。 – mxle

+0

ahhh私はそれが私の問題の一部であったと思う、audioloopなどからインポートしていた...私は 'django.urls'からインポートするように変更した – ratrace123

関連する問題