首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Python类的视图updateview未保存

基于Python类的视图updateview未保存
EN

Stack Overflow用户
提问于 2022-10-07 12:47:55
回答 1查看 59关注 0票数 1

我在编程和尝试通过使用Python为Todo创建一个网站方面是新的。我使用基于Django类的更新视图在数据中进行编辑。但当我点击提交按钮,它不会被保存。

models.py

代码语言:javascript
复制
class Task(models.Model):
name=models.CharField(max_length=25)
details=models.CharField(max_length=750)
priority=models.CharField(max_length=500)
date=models.DateField()
user=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

def __str__(self):
    return self.name

views.py

代码语言:javascript
复制
class TaskUpdateView(UpdateView):
model = Task
fields = "__all__"
template_name = 'update.html'
context_object_name = 'task'
success_url = reverse_lazy('cbvhome')

urls.py

代码语言:javascript
复制
path('update/<pk>',views.TaskUpdateView.as_view(),name='cbvupdate')

update.html

代码语言:javascript
复制
<form method="post" class=" justify-content-center align-items-center mb-4 ps" enctype="multipart/form-data">
                    {% csrf_token %}
                    <div class="mb-3">
                      <label for="task-id" class="form-label  me-5">Task</label>
                      <input type="text" name="name" class="form-control" id="task-id" aria-describedby="emailHelp" style="width: 80%;" placeholder="Enter your Task Here" value="{{task.name}}">
                    </div>
                    <div class="mb-3">
                        <label for="exampleFormControlTextarea1" class="form-label me-5">Enter the details</label>
                        <textarea class="form-control" name="details" id="task-detail"rows="2" placeholder="Enter the task details" style="width: 80%;">{{task.details}}</textarea>
                        
                    </div>
                    <div class="mb-3">
                      <label for="task-date" class="form-label  me-5">Date set curerntly: {{task.date}}</label>
                      <input type="date" name="date" class="form-control" id="task-date" style="width: 80%;" value="{{task.date}}">
                    </div>
                    <div class="mb-3 mt-3">
                        <label for="task-prio" class="form-label  me-5">Select the priority</label>
                        <select class="form-select" name="priority" aria-label="Default select example" style="width: 80%;" id="task-prio" value="{{task.priority}}">
                            <option selected>{{task.priority}}</option>
                            <option value="Very Urgent" class="text-danger">Very Urgent</option>
                            <option value="Urgent" class="text-warning">Urgent</option>
                            <option value="Important" class="text-primary">Important</option>
                          </select>
                    </div>
                    <div class="submit pe-5" style="padding-left: 100px; padding-top: 10px;" >
                    <input type="submit" class="btn btn-outline-success me-5" value="Save">
                    </div>    
                </form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-07 13:00:51

默认情况下,如果url参数中没有给定任何内容,则将其视为str类型,因此将其定义为int类型。

代码语言:javascript
复制
path('update/<int:pk>/',views.TaskUpdateView.as_view(),name='cbvupdate')

如果您在HTML的表单标记中给出action="{% url 'cbvupdate' %}",这会更好,尽管这不是必要的,因为Django总是采用当前的页面路由。

备注:总是在每条路线的末尾添加/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73987402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档