gpt4 book ai didi

django - 在管理区域外使用 django 文件管理器(或替代库)

转载 作者:行者123 更新时间:2023-12-04 21:35:16 26 4
gpt4 key购买 nike

Django filer 是一个很棒的文件管理工具,它检测重复项并根据文件夹中的哈希值组织文件,具有用于管理文件和文件夹并处理文件历史记录和权限的出色 UI。

我阅读了一些源代码并意识到它在代码和模板中广泛使用了 django 管理功能;有什么办法可以将这些功能用于已登录的编外人员?为他们提供用于在他们的个人上传区域上传和管理他们自己的文件和文件夹的工具(无需重新发明轮子)?

如果没有简单的方法,有什么替代方法,您建议以最少的代码更改提供此类功能?

最佳答案

根据 this django-filer 不应该在管理员之外工作,但是通过一些“胶水”,我能够使上传在“正常”模板中工作。这是我的一些代码:

    # forms.py

class PollModelForm(forms.ModelForm):
uploaded_image = forms.ImageField(required=False)

class Meta:
model = Poll
fields = ['uploaded_image']

# views.py
# I used django-extra-views but you can use a normal cbv
class PollCreateView(LoginRequiredMixin, CreateWithInlinesView):
model = Poll
form_class = PollModelForm
template_name = 'polls/poll_form.html'
success_url = reverse_lazy('polls:poll-list')
inlines = [ChoiceInline]

# Powered by django-extra-views for the inlines so a bit different
@transaction.atomic
def forms_valid(self, form, inlines):
# It's more secure this way.
form.instance.user = self.request.user

uploaded_file = form.cleaned_data['uploaded_image']
image = Image.objects.create(
name=str(uploaded_file), is_public=True, file=uploaded_file,
description='Poll Image', owner=self.request.user
)
form.instance.image = image

log.info('Poll image uploaded'.format(**locals()))

return super(PollCreateView, self).forms_valid(form, inlines)

# HTML
<div class="form-group">
<input type="file" name="uploaded_image" id="id_uploaded_image">
<p class="help-block">Upload image here.</p>
</div>

关于django - 在管理区域外使用 django 文件管理器(或替代库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com