python - Django:找不到页面(404),请求 URL:http://127.0.0.1:8000/Loader/confirm_booking/17 提出者:Loader.views.booking_approve
问题描述
在用户批准帖子的项目上工作,然后单击该帖子应由用户批准的按钮......但是,在单击它时会显示这样的错误。
这是预订模型
class Booking(models.Model):
order_id = models.AutoField(primary_key= True,default='1')
b_price = models.ForeignKey(price, on_delete=models.CASCADE, related_name='b_prices',default='')
b_post = models.ForeignKey(Loader_post, on_delete=models.CASCADE,
related_name='b_posts',default='')
booked_at = models.DateField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, default='')
approved_price = models.BooleanField(default=False)
这是我的意见.py
def booking_approve(request,pk):
booking = get_object_or_404(Booking, pk=pk)
booking.save()
booking.approve()
return redirect('Loader:post', pk=pk)
这是我的批准和拒绝页面的 HTML,用户可以在单击批准按钮时拒绝报价和批准,帖子、用户、驱动程序的所有详细信息都应保存到数据库中,但它不起作用。
{% for loader_post in request.user.Loader.all %} {% for price in loader_post.prices.all %}
<div class="card" style="margin-right: 30%; width: 22%; margin-bottom: 5%; text-align: left;">
<div class="container">
<img src="{{loader_post.image_of_load.url }}" alt="Avatar" style="width:100%; height: 25%; margin-bottom: 10px; ">
<h4><b>Post id : {{loader_post.id }}</b></h4>
<p>Driver offer : <i class="fa fa-inr" aria-hidden="true"></i>{{price.driver_price }}</p>
<p>Offer by : {{price.driver_name }}</p>
<a style="margin-right:20px;" href="{% url 'Loader:booking_remove' pk=price.pk %}"><i class="fa fa-times fa-4x" style="color: red;" aria-hidden="true"></i></a>
<a href="{% url 'Loader:booking_approve' pk=price.pk %}"><i class="fa fa-check-circle fa-4x" aria-hidden="true"></i></a>
</div>
这是我的 urls.py
path('confirm_booking/<int:pk>',views.booking_approve, name="booking_approve"),
解决方案
至少我们现在知道,404 错误来自未找到的 pk,这很好。至少有两个问题: 1. 没有保存任何更改。2.调用了错误的pk。第一个问题很容易解决。这里的问题是,您调用模型对象并保存它,但您没有进行任何更改。因此,您需要包括类似
booking.b_price= = request.POST['new_price']
这样,您的带有 pk=pk 的 Booking 对象将其属性 b_price 更改为新的给定值(在 booking.save() 之后)。当然,为此,您需要从您的 html 中发布一个名为“new_price”的值,例如:
<form method="POST" action="{% url 'Loader:booking_approve' pk=price.pk %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" name="new_price" placeholder="New Price" />
<input class="" type="submit" value="Change price" style="float: right;"/>
</form>
对于第二个问题,请确保 pk=price.pk 在您的 html 中给出正确的 pk。
推荐阅读
- css - 避免 Angular Material 主题中的重复样式
- c++ - 数组和字符串 C++ 的各种数据验证文件 I/O 实践
- sql - ODBC 调用失败 违反主键
- linux - 如果每个页框在磁盘中都有一个副本?
- mysql - 如何在 MySQL 中选择某个值?
- php - 如何使用 RabbitMQ 在 CodeIgniter 中重新加载代码更改?
- apache-poi - 使用 Apache POI 为 autoSizeColumn 设置最大列宽
- gstreamer - 如何测量 Gstreamer 中的过滤器处理时间?
- linux - AWS 命令行问题
- c - 我需要帮助从这个数组中提取每个团队的分数,但我仍然不知道如何解决它