我只是刚学Django。你知道吗
起初,使用Django形式似乎很方便。我可以用ModelForm类得到我已经在Model中定义的所有内容。我可以把{form}放到模板中。已经有预定义的字段类型,我可以方便地使用它。你知道吗
但是如果你需要和一个不懂Django或者Python并且负责前端部分的人一起工作的话,这是很棘手的。你知道吗
例如,我这样做模板。你知道吗
你知道吗示例.html你知道吗
<form action="." method="post"> {% csrf_token %}
{{ form }}
<input type="submit" value="ok">
你知道吗视图.py你知道吗
class TestView(FormView):
template_name = 'example.html'
form_class = TestForm
success_url = '/success/'
def form_valid(self, form):
print('data is validated! you can do work with cleaned data!')
return super(TestView, self).form_valid(form)
Q1:前台开发人员不能使用{{form}}。正确的?
所以我可以改变示例.html因为如果正确设置name属性和type属性,它就可以正常工作。你知道吗
你知道吗示例.html你知道吗
<form action="." method="post"> {% csrf_token %}
<input type="text" name="name">
<input type="text" name="calorie">
<input type="submit" value="Ok">
</form>
你知道吗型号.py你知道吗
class Cereal(models.Model):
name = models.CharField(max_length=50)
calorie = models.CharField(max_length=50)
Q2:我认为如果我改变了,前端开发人员可以使用它示例.html在上面?正确的?
好吧,如果我的问题都很好的话,那么使用ModelForm并编写html代码而不是{form}django模板语法似乎很好。但是如果你使用modelcheicefield,它看起来很讨厌。您设置了queryset参数,并在模板上显示select小部件。例如,queryset reqsult是{A,B,C}。它会变成下面这样
<select id="id_something" name="name of something">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
如前所述,我不想尽可能多地使用Django模板语法,比如{form}。所以我要写下面的内容。你知道吗
你知道吗视图.py你知道吗
render(request, "example.html", {queryset : something.objects.all()})
你知道吗示例.html你知道吗
<select id="id_something" name="name of something">
{% for element in queryset %}
<option>{{ element }}</option>
{% endfor %}
</select>
Q3:这种方法看起来合适吗?在使用Django表单时,使用较少的Django模板语法不是更好的方法吗?
好吧,我的结论是,使用DRF(Django RestFramework)是独立地为前端和后端开发人员分离任务的最佳方法。但在我目前面临的情况下,模板(html、css、js)已经制作好了。我需要将其更改为与Django框架一起使用。前端开发人员将改变一点点与模板已经作出。你知道吗
当我在Youtube上观看pycon视频时,有人说Djang框架有点过于耦合。你知道吗
我希望我能得到的想法更有效地使用Django模型形式与前端开发人员。你知道吗
谢谢你的阅读。我的问题对于一个专家来说可能是荒谬的。如果不清楚,请再问我一次。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐