模板中的 Django 表单

问题描述 投票:0回答:1

我试图构建一个表单,使用户能够将图片从网站上传Media\Images文件夹。

我尝试了这个,但没用

模型.py

from django.db import models

# Create your models here.


class imgUpscalling(models.Model):
    Image = models.ImageField(upload_to='images/')

forms.py

from django import forms
from .models import imgUpscalling

class ImageForm(forms.ModelForm):
    class Meta: 
        model = imgUpscalling
        fields = ('Image',) 

views.py

def img_upscaler(request):
    context = {'from': ImageForm()}
    return render(request, "upsc_main.html",context)

模板.html

<h1>Image Upscaler & Enhanced Resolution</h1>
    <h2>Select the Image</h2>
     <form method = "post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Upload</button>
    </form>

你能通知我我在代码中犯的错误吗?因为模板中没有显示该表单。 提前非常感谢

django django-models django-views django-forms backend
1个回答
0
投票

这里有几件事:

  1. 正确配置您的settings.py。使用媒体时,您需要配置项目来处理媒体文件,如下所示:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  1. 您还需要在项目级别配置 urls.py,它将如下所示:
urlpatterns = [] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if settings.DEBUG:
    static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

  1. 视图.py

您的视图应该如下所示:

def upload_image(request):
    if request.method == 'POST':
        form = ImageForm(request.POST, request.FILES) # ensure you include request.files
        if form.is_valid():
            form.save()
            return redirect('upsc_main.html')  # Redirect to a success page
    else:
        form = ImageUploadForm()
    return render(request, 'yoururl.html', {'form': form})

然后显然配置您的应用程序 urls.py、html 模板等。

© www.soinside.com 2019 - 2024. All rights reserved.