![](/img/trans.png)
[英]request.method == 'POST' is not working in Django
[英]Django File Upload form: if request.method==“POST” fails
所以我正在尝试将文件上传到我的网站。 这是我以前做过的事情,但现在在我看来,表单没有通过if request.method=="POST"
行。 这是我的代码:
设置.py:
...
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
网址.py:
urlpatterns=[
...
path('filepost/', views.filepost, name='filepost')
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模型.py
...
class File(models.Model):
user=models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='files', null=True)
file=models.FileField(upload_to='files/')
forms.py
...
class FileForm(forms.Form):
file=forms.FileField(label='')
主页.html:
...
<form action="{%url 'filepost'%}" method="post" enctype="multipart/form-data">
{%csrf_token%}
{{fileForm}}
<button type="button">Post File</button>
</form>
视图.py:
...
def filepost(request):
form=FileForm()
if request.method=='POST':
print(1)
form=FileForm(request.POST, request.FILES)
if form.is_valid():
file=request.FILES['file']
newupload=File(user=request.user, file=file)
newupload.save()
return redirect('../')
我在视图中有 print(1) 来检查它是否超过了if request.method=="POST"
行,但它没有打印 1 所以我猜这行是问题所在。 有任何想法吗? 谢谢!
请纠正你的看法
def filepost(request):
if request.method=='POST':
form=FileForm(request.POST, request.FILES)
if form.is_valid():
newupload.save(commit=False)
newupload.user = request.user
newupload.save()
else:
form=FileForm()
return redirect('/')
return render(request, 'template_name.html', { 'form': form }
并在您的模板中调用它{{ form.as_p }}
而不是{{fileForm}}
,还可以在 forms.py 中使用 model 表单
我自己想通了。 我已将按钮类型指定为按钮,而不是在 home.html 中提交。 我没有更改代码的rest。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.