[英]upload .txt file into textarea in django?
我是Django的新手。 我已經使用django表單小部件為網站制作了textareas。
我想添加一個文件上傳功能,以便能夠上傳將插入文本區域的.txt文件。 我該怎么辦?
我已經在https://docs.djangoproject.com/zh-CN/2.1/topics/http/file-uploads/中查看了文檔
如何在已編寫的代碼中合並此代碼?
forms.py
class HomeForm(forms.ModelForm):
textInput = forms.CharField(required=True, widget=forms.Textarea(
attrs={
'class': 'form-control',
'placeholder': 'Input text...',
'id': 'input1'
}
))
class Meta:
model = Post #import Post model from home models.py
fields = {'textInput',} #comma required to ensure tuple capability
models.py
class Post(models.Model):
post = models.CharField(max_length=1000)
user = models.ForeignKey(User, on_delete=models.PROTECT) #default .CASCADE
date = models.DateTimeField(auto_now=True) #data saved into db
views.py
class HomeView(TemplateView):
template_name='home/home.html'
def get(self, request):
form = HomeForm
posts = Post.objects.all()
args = {'form': form, 'posts': posts}
return render(request, self.template_name, args)
def post(self, request):
form = HomeForm(request.POST)
if form.is_valid():
post = form.save(commit=False) #saves data (thanks to the model form)
#comit is false as object still needs to be modified
post.user = request.user
post.save()
text = form.cleaned_data['textInput'] #anticipates SQL injection
#return redirect('home:home')
args = {'form': form, 'text': text}
return render(request, self.template_name, args)
首先,您應該附加forms.FileField
以使用Django框架上傳機制。
處理請求時,任何Django表單都有其lifecycle
。 當用戶上傳.txt文件時,您可以在save
方法中捕獲此文件,如下所示:
class HomeForm(forms.ModelForm):
...
text_file = forms.FileField()
...
def save(self, commit=True):
...
# check if text_file contains content
text_file_data = self.cleaned_data.get("text_file")
...
if text_file_content:
# self.instance is instance of "Post" model
self.instance.post = text_file_content
...
return super().save(commit)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.