如何解决django 无需登录即可使用管理小部件
我有一个带有 ModelForm
小部件的 FilteredSelectMultiple
from django import forms
from django.contrib import admin
class PortFolioForm(forms.ModelForm):
class Meta:
model = PortFolio
fields = ['title','description','keywords']
class Media:
css = {'all':['admin/css/widgets.css']}
js = ['/admin/jsi18n/']
keywords = forms.ModelMultipleChoiceField(label='Mots clés',widget=admin.widgets.FilteredSelectMultiple('Mots clés',False),queryset=Keyword.objects.all())
我在管理员外部使用表单,在视图内部
c = {'form': PortFolioForm() }
return render(request,'portfolio.html',c)
......
form = PortFolioForm(request.POST)
if form.is_valid():
form.save()
......
{{ form | crispy }}
如果没有则不会出现
我收到以下 js 错误:
拒绝执行来自 'http://localhost/admin/login/?next=/admin/jsi18n/' 的脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查.
未捕获的 ReferenceError: interpolate 未定义 在 Object.init (SelectFilter2.js:38) 在 SelectFilter2.js:233 在 NodeList.forEach() 在 SelectFilter2.js:231
由于我正在开发的网站旨在供其他用户使用,因此我只想使用小部件本身,因为所有保存都在视图中完成,使用 form.save()
解决方法
这可能是因为您正在访问管理 URL 下的脚本:
class Media:
css = {'all':['admin/css/widgets.css']}
js = ['/admin/jsi18n/']
您需要访问 /admin/ 位置之外的 js。将脚本复制到不在 admin/ 下的文件夹,然后更改位置,或提供不在 admin 下的 url。例如添加到 urls.py:
url(r'^jsi18n/$','django.views.i18n.javascript_catalog',name='jsi18n')
然后将表单脚本网址更改为:
class Media:
css = {'all':['admin/css/widgets.css']}
js = ['jsi18n/']
检查Django's FilteredSelectMultiple widget only works when logged in
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。