首先,您必须创建一个 django 模型。
将此代码放入models.py
.
class Names(models.Model):
name = models.CharField(max_length = 100)
然后您必须创建管理模型。
将此代码放入admin.py
.
class NamesAdmin(admin.ModelAdmin):
list_display = ['name']
# whatever you want in your admin panel like filter, search and ...
admin.site.register(Names, NamesAdmin)
我认为它符合您的要求。对于拆分名称,您可以覆盖保存模型方法并在其中拆分名称。但是如果你想要一个额外的表单,你可以很容易地创建一个 django 模型表单。
将代码放在类似admin.py
,views.py
或forms.py
class NamesForm(forms.ModelForm)
class Meta:
model = Names
那是你的模型和形式。因此,如果您想将表单添加到 django 管理面板,您必须在 django admin 中为其创建一个视图。为此,请创建一个常见的视图。
将代码放入您的admin.py
orviews.py
中。
def spliter(req):
if req.method == 'POST':
form = NamesForm(req.POST)
if form.is_valid():
for name in form.cleaned_data['names'].split(' '):
Names(name = name).save()
return HttpResponseRedirect('') # wherever you want to redirect
return render(req, 'names.html', {'form': form})
return render(req, 'names.html', {'form': NamesForm()})
请注意,您必须创建names.html
并将以下代码放入您的 html 页面中。
{% extends 'admin/base_site.html' %}
{% block content %}
<!-- /admin/names/spliter/ is your url in admin panel (you can change it whatever you want) -->
<form action="/admin/names/spliter/" method="post" >{% csrf_token %}
{{ form }}
<input type="submit" value="'Send'" >
</form>
{% endblock %}
这是您的视图,您可以在任何地方使用它。但是,如果您希望只有管理员有权查看此页面,则必须将此方法也添加到您的NamesAdmin
类中。
def get_urls(self):
return patterns(
'',
(r'^spliter/$', self.admin_site.admin_view(spliter)) # spliter is your view
) + super(NamesAdmin, self).get_urls()
而已。我希望这可以帮助你。