python - django 填充 html 表单

标签 python html django

如何在不使用 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 中处理表单的方式非常相似,或者类似,模型 被传递到呈现现有值的模板中。模型的 idpk(主键)通过 URL 传递到 View ,然后更新值然后返回到 POST< 中的存储 View 数据,可以在其中检索它们并将更新的值存储在数据库中。

Django 的优点之一是它如何平衡开发速度和可插入性 - 几乎它的任何部分都可以替换或更改。

话虽如此,您是否有理由不想使用django.forms?据我了解,表单只是为您执行上面示例中的大部分艰苦工作,这就是 django.forms 的用途。它们还具有其他功能,可帮助防止恶意访问您的网络应用程序,例如 OOTB。创建 ajax 辅助方法来检索和更新它们也相当容易。

关于python - django 填充 html 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893263/

相关文章:

python - 在 Django 产品中从 Python 2.6 升级到 Python 2.7

python - 如果列表中的元素在另一个列表中,则删除该列表的元素

python - 从 pytrends.pyGTrends 导入 pyGTrends 不工作

python - 仅从文件中获取选定的行

html - 防止文本溢出父容器

python - 从 django admin 提供图像文件

python - 从 Python 中的数据集绘图

Jquery - 表单验证,向错误消息添加 css 样式

使用 float 样式时,HTML 元素不遵循垂直对齐样式

django - 如何使用 key /对象的通配符在 django 中生成 aws 预签名 url