Django UpdateView, TemplateView简单示例

本文详细介绍了在特定应用环境中,作者更新操作后的反馈流程及其数据库处理方式。通过使用自定义测试服务器,发现更新后的结果可能无法即时显示,引发了一系列问题排查与解决方案探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://localhost:8000/myapp/author_update/1/


点击提交后,窗口显示Thanks!,同时将更新内容存入数据库。当使用自带测试服务器时,再次访问http://localhost:8000/myapp/author_update/1/ 很有可能得不到更新后结果。


一、目录结构:

mysite/

manage.py

myapp/

__init__.py

urls.py

models.py

tests.py

views.py

templates/

myapp/

thanks.html

author_update_form.html

mysite/

__init__.py

settings.py

urls.py

wsgi.py


二、代码

# mysite/mysite/urls.py
from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^myapp/', include('myapp.urls')),
)


# mysite/myapp/urls.py
from django.conf.urls import patterns, url
from .views import AuthorUpdate, ThanksView

urlpatterns = patterns('',
    url(r'^author_update/(?P<pk>\w+)/$', AuthorUpdate.as_view()),
    url(r'^thanks/', ThanksView.as_view()),
)

# mysite/myapp/views.py
from django.views.generic import TemplateView
from django.views.generic.edit import UpdateView

class ThanksView(TemplateView):
    template_name = 'myapp/thanks.html'

class AuthorUpdate(UpdateView):
    model = Author
    template_name_suffix = '_update_form'
    success_url = '/myapp/thanks/'


# mysite/myapp/models.py
from django.db import models
class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    def __unicode__(self):
        return '%s %s' % (self.first_name, self.last_name)

# mysite/myapp/templates/myapp/author_update_form.html

<html>
<head><title>Author Update</title></head>
<body>
<form method="post">
{% csrf_token %}
<table>
<tr><th>First Name</th><td>{{ form.first_name }}</td></tr>
<tr><th>Last Name</th><td>{{ form.last_name }}</td></tr>
<tr><td colspan="2"><input type="submit" /></td></tr>
</form>
</body>
</html>


# mysite/myapp/templates/myapp/thanks.html

<html>
<head><title>Thanks!</title></head>
<body>
Thanks!
</body>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值