如何在不使用 django-forms 的情况下设置 html 表单字段。
最佳答案
如果您不想使用django.forms
,而是从模型获取数据并将其显示为 html 表单,您可以执行以下操作:
views.py
from django.shortcuts import render_to_response, redirect
from myApp.models import MyModel
def editForm(request, model_pk):
model = MyModel.objects.get(pk=model_pk)
return render_to_response('formUpdate.html',{ 'model' : model })
def updateForm(request, model_pk):
model = MyModel.objects.get(pk=model_pk)
model.firstname = request.POST['firstname']
model.lastname = request.POST['lastname']
model.save()
return redirect('home', message='your name has been updated')
模板 - formUpdate.html
{% extends "base.html" %}
{% block content %}
<form action="/updateForm/{{ model.id }}/" method="post">
First name: <input type="text" name="firstname" value="{{ model.firstname }}" /><br />
Last name: <input type="text" name="lastname" value="{{ model.lastname }}" /><br />
<input type="submit" value="submit" />
</form>
{% end block %}
models.py
from django.db import models
class MyModel(models.Model):
firstname = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^$', 'views.home', name="home"),
(r'^editForm/(?P<model_pk>\d+)/$', 'views.editForm'),
(r'^updateForm/(?P<model_pk>\d+)/$', 'views.updateForm'),
)
这与 PHP 中处理表单的方式非常相似,或者类似,模型
被传递到呈现现有值的模板中。模型的 id
或 pk
(主键)通过 URL 传递到 View ,然后更新值然后返回到 POST< 中的存储 View
数据,可以在其中检索它们并将更新的值存储在数据库中。
Django 的优点之一是它如何平衡开发速度和可插入性 - 几乎它的任何部分都可以替换或更改。
话虽如此,您是否有理由不想使用django.forms
?据我了解,表单只是为您执行上面示例中的大部分艰苦工作,这就是 django.forms 的用途。它们还具有其他功能,可帮助防止恶意访问您的网络应用程序,例如 OOTB。创建 ajax 辅助方法来检索和更新它们也相当容易。
关于python - django 填充 html 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893263/