【问题标题】:Django file upload: redirect views keep returning errorsDjango文件上传:重定向视图不断返回错误
【发布时间】:2020-02-11 15:19:24
【问题描述】:

我一直在用 Django 开发这个音乐网站,基本上只是想让上传视图正常工作。当您上传音乐文件时,我希望它重定向到结果页面。我在尝试使重定向工作时遇到了真正的麻烦,它应该非常简单,但一直没有工作。任何帮助将不胜感激!!我的错误:

ValueError 在 /uploads/home/ 视图 uploads.views.upload 没有返回 HttpResponse 对象。它返回 None 。

uploads/views.py(相关错误代码):

def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('uploads:results')

        else:
            form = UploadFileForm()
        return render(request, 'uploads/upload.html', {'form': form})

上传/urls.py

from django.urls import path

from . import views

    app_name = 'uploads'

    urlpatterns = [
        path('home/', views.upload, name='index'),
        path('<int:audiofile_id>/results/', views.ResultsView.as_view(), name='results'),
    ]

upload.html(上传模板)

{% extends 'uploads/base.html' %}

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
{% block content %}
<div class="container">
    <div class="row">
        <div class="col-lg-12 col-md-8">
            {% for audiofile in audiofiles %}
              <h1>{{ audiofile.title }}</h1>




        </div>
        </div>
        <div class="row">

        <div class="col-lg-12 col-md-8">
      <form action="{% url 'uploads:results' audiofile_id %}" method="post" name = "form" enctype = "multipart/form-data">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="Submit">
        </form>
            {% endfor %}
        </div>
        </div>

        <!--<div class="row">-->
        <!--    <div class="col-lg-8">-->
        <!--<img src="{% static "uploads/loveLogo.jpg" %}" alt="lovelogo" class="img-fluid">-->
        <!-- </div>-->
        <!-- </div>-->
         </div>

 {% endblock %}

【问题讨论】:

  • 您在访问/uploads/home/ 时遇到了这个错误,对吧?还是在您点击表单上的提交后?
  • 访问上传/主页,是的。这是因为我提交时的重定向是错误的
  • 哦,是的,我明白了,您的上传视图只是与错误相关的一部分,而不是整个视图功能。
  • 是的,正确,这仅适用于一个视图,因为我的其他视图工作正常

标签: python django file-upload django-views


【解决方案1】:

您正在尝试重定向到 url results,但此 url 也将 audiofile_id 作为您在重定向时未传递的参数,因此您需要更改您的视图:

   if form.is_valid():
        file = form.save()
        return redirect('uploads:results',file.audiofile_id)

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多