在{% set form.username = user.get_username %}
我希望 form.username 等于用户的用户名,因此在发送表单时,我知道是谁发送的。但是,它会引发错误:" 您是否忘记注册或加载此标记?"
如果我用{{forms.username}}
代替这一行,它就可以了,但是用户必须自己填写表格,无论他想要什么,允许他提交一个不是他的用户名的文件。 / p>
file.html (包含在home.html中):
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% set form.username = user.get_username %}
{{ form.file }}
<button type="submit">Upload</button>
views.py:
from django.shortcuts import render
from django.conf import settings
from django.core.files.storage import FileSystemStorage
from data.models import UserData
from data.forms import UserDataForm
def model_form_upload(request):
if request.method == 'POST':
form = UserDataForm(request.POST, request.FILES)
if form.is_valid():
form.save()
else:
form = UserDataForm()
return render(request, 'data/ranking_index.html', {
'form': form
})
models.py:
from django.db import models
class UserData(models.Model):
username = models.CharField(max_length=40)
file = models.FileField(upload_to='userdata/')
uploaded_at = models.DateTimeField(auto_now_add=True)
forms.py:
from django import forms
from data.models import UserData
class UserDataForm(forms.ModelForm):
class Meta:
model = UserData
fields = ('username', 'file', )
答案 0 :(得分:1)
渲染模板时未包含user
。因此,jinja2无法找到user
的值。我建议如下。
return render(request, '<your template>', {
'form': form
'user': user
})
您需要在同一个函数中创建此user
对象,或者从其创建的其他位置导入。希望这有帮助!