Django Popullate html表单

2024-04-18 17:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在不使用django表单的情况下设置html表单字段。你知道吗


Tags: django表单html情况单字
2条回答

如果不希望使用django.forms,而是从模型中获取数据并将其显示为html表单,可以执行以下操作:

视图.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')

模板-表单更新.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 %}

型号.py

from django.db import models

class MyModel(models.Model):
    firstname = models.CharField(max_length=20)
    lastname = models.CharField(max_length=20)

网址.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中处理表单的方式非常相似,model被传递到模板中,在模板中呈现现有的值。模型的idpk(主键)通过URL传递给视图,然后更新的值返回到POST数据中的存储视图,在那里可以检索它们,更新的值存储在数据库中。你知道吗

Django的优点之一是它如何平衡开发速度和可插入性——几乎任何一个部分都可以被替换或修改。你知道吗

说到这里,有没有理由不想使用django.forms?据我所知,form只是为您完成了上面示例中的大部分艰苦工作,这就是django.forms的目的。它们还具有其他功能,以帮助防止恶意访问您的web应用程序,例如OOTB。创建ajax助手方法来检索和更新它们相当容易。你知道吗

您可以像在html中创建一个普通表单那样做。只需小心放置{% csrf_token %}。以及nameinput的形式,因为它们将在视图中使用。你知道吗

例如:

<form method="post" action="#the url for the view">
{% csrf_token %}
...
...
<!  fields that you want Eg:  >
<label for="username">User name:</label>
<input type="text" name="username" id="username" />
...
...
<input type="submit" value="Submit" />
</form>

希望这有帮助。你知道吗

相关问题 更多 >