我的Django表单字段没有显示在temp中

2024-04-25 13:57:47 发布

您现在位置:Python中文网/ 问答频道 /正文

你知道吗表单.py你知道吗

class ImageCreateForm(forms.ModelForm):
        class Meta:
            model = Image
            fields = {'title', 'url', 'description'}
            widgets = {
                'url':forms.HiddenInput,
            }


        def clean_url(self):
            url = self.cleaned_data['url']
            valid_extensions = ['jpg', 'jpeg']
            #The two below codes do exactly the same thing but partition is faster
            extention = url.rpartition('.')[2].lower()
            #extension = url.rsplit('.',1)[1].lower()
            if extension not in valid_extensions:
                raise forms.ValidationError('The given URL does not match valid image extensions')
            return url


        def save(self, force_insert=False,force_update=False,commit=True):
            image = super(ImageCreateForm, self).save(commit=False)
            image_url = self.cleaned_data['url']
            image_name = '{}.{}'.format(slugify(image.title), image_url.rpartition('.')[2].lower())
            #download image from the given URL
            response = request.urlopen(image_url)
            image.image.save(image_name,ContentFile(response.read()),save=False)

            if commit:
                image.save()
            return image

图像显示正常,但字段未显示

索引.html

    {% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block title %}Bookmark an image{% endblock %}
{% block content %}
<h1>Bookmark an image</h1>
<img src="{{ request.GET.url }}" class="image-preview">
<form action="." method="post">
    {{ forms.as_p }}
    {% csrf_token %}
    <input type="submit" value= 'Bookmark it!'>

</form>
{% endblock %}

Tags: imageselffalseurltitlesavedefextensions
2条回答

虽然看起来不像,但要确保请求.方法与之相关的其他方面都处于同一水平。我有时会让else缩进以匹配if表格.u有效吗水平。你知道吗

把你的表格改成这个

传递list中的字段,而不是set类型{}

class ImageCreateForm(forms.ModelForm):
        class Meta:
            model = Image
            fields = ['title', 'url', 'description']
            widgets = {
                'url':forms.HiddenInput,
            }

在你看来

def image_create(request):
    if request.method == 'POST':
        #form is sent
        form = ImageCreateForm(request.POST)
        if form.is_valid():
            #form data is valid
            cd = form.cleaned_data
            new_item = form.save(commit=False)

            #assign current user to the item
            new_item.user = request.user 
            new_item.save()
            messages.success(request, 'Image added successfully')

            #redirect to new created item detail view
            return redirect(new_item.get_absolut_url())

    else:
        #build form with data provided by the bookmarklet via GET
        form = ImageCreateForm()

    return render(request, 'images/image/index.html',{'section':'images', 'form':form})

在html中

{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block title %}Bookmark an image{% endblock %}
{% block content %}
<h1>Bookmark an image</h1>
<img src="{{ request.GET.url }}" class="image-preview">
<form action="." method="post">
    {{ form.as_p }}
    {% csrf_token %}
    <input type="submit" value= 'Bookmark it!'>

</form>
{% endblock %}

相关问题 更多 >

    热门问题