Django使用表单输入而不调用表单
Posted
技术标签:
【中文标题】Django使用表单输入而不调用表单【英文标题】:Django use of form input without calling form 【发布时间】:2021-04-21 07:50:27 【问题描述】:这可能是个愚蠢的问题,但是在不调用表单的情况下使用输入是否可以。
我的表单
class st_image(forms.ModelForm):
pro_img =forms.ImageField(widget=forms.FileInput(attrs="id" :"upload_image", "class":"form-control image"))
class Meta:
model=CustomUser
fields= [ 'pro_img']
我的观点
def st_profile_img(request):
pk = request.user.id
obj = get_object_or_404(CustomUser, pk=pk)
form=st_image(request.POST or None,request.FILES or None, instance=obj)
if request.method == 'POST':
if(form.is_valid()):
form.save()
messages.success(request, "Амжилттай бүртгэлээ")
return HttpResponseRedirect(reverse('st_profile'))
else:
messages.error(request, "Зөвхөн зураг хийнэ үү")
return HttpResponseRedirect(reverse('st_profile'))
我的模板
<form method="POST" action="% url 'st_profile_img' %" enctype="multipart/form-data"
id="image-form">
% csrf_token %
<label for="upload_image" class="text-center student-profile-img">
<img id="uploaded_image" class="image-responsive" src=" user.pro_img.url " >
<div class="overlay">
<div class="text">Засах</div>
</div>
<input type="file" name="pro_img" class="image" id="upload_image"
oninput="uploadImage()" style="display: none;" accept="image/x-png,image/jpeg" />
</label>
</form>
如您所见,我没有使用 form,所以可以使用这样的输入(使用与预期表单输入相同的名称)吗?
或者是否有任何正确的方法可以使用form调用输入名称? (除了 request.POST.get 并且不使用 attrs)
【问题讨论】:
手动放置字段是可以的,没有问题,你的选择。 【参考方案1】:是的,您无需在模板中使用 form
即可使表单正常工作。但是,您需要提供所有正确的 <input>
标签:
<input type="file" name="pro_img" ...>
如果你这样渲染它会自动完成:
form.pro_img
但在这种情况下,您将无法自定义 <input>
标签,这可能是您选择第一种方法的原因。
另一种自定义输入字段的方法是通过creating your own custom widget,但这可能需要更多的工作,并且在您的情况下并不真正需要。
【讨论】:
以上是关于Django使用表单输入而不调用表单的主要内容,如果未能解决你的问题,请参考以下文章
在没有 django 表单的 django 模板上工作 [关闭]