我想编辑我的产品详细信息Django
我正在尝试编辑我收集的详细信息,使用带有POST方法的表单,现在我想编辑这些详细信息。我试过了,但没用你们能告诉我我做错了什么吗 编辑文章视图我想编辑我的产品详细信息Django,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我正在尝试编辑我收集的详细信息,使用带有POST方法的表单,现在我想编辑这些详细信息。我试过了,但没用你们能告诉我我做错了什么吗 编辑文章视图 @login_required() def edit_product(request, product_id): form = NewPro() edit = get_object_or_404(Product, product_id) if request.method == 'POST': form = New
@login_required()
def edit_product(request, product_id):
form = NewPro()
edit = get_object_or_404(Product, product_id)
if request.method == 'POST':
form = NewPro(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('product')
else:
form = NewPro()
return render(request, "default/edit.html", {'form': form, 'edit': edit})
Url模式
path('<int:product_id>/edit_product', views.edit_product, name='edit_product')
path('/edit\u product',views.edit\u product,name='edit\u product')
我正在尝试添加按钮的Html
{% extends 'default/dashboard.html' %}
{% block content %}
<h1>Products Details </h1>
<p>These are the details of your product, {{ user.username }}</p>
<ul>
<li>{{ product_details.name }}</li>
<li>{{ product_details.price }}</li>
<li>{{ product_details.category }}</li>
<li>{{ product_details.store }}</li>
<li>{{ product_details.user }}</li>
</ul>
<a href={% url 'edit_product' edit.id %}>
<button>Edit Product</button>
</a>
{% endblock %}
{%extends'default/dashboard.html%}
{%block content%}
产品详情
以下是您的产品{{user.username}的详细信息
- {{product_details.name}
- {{product_details.price}}
- {{product_details.category}
- {{product_details.store}
- {{product_details.user}
{%endblock%}
我试图在其中显示表单的Html
{% extends 'default/dashboard.html' %}
<html>
<head><title>E-Commerce App</title></head>
{% block content %}
<h2>Edit Product</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">submit</button>
</form>
{% endblock %}
</html>
{%extends'default/dashboard.html%}
电子商务应用程序
{%block content%}
编辑产品
{%csrf_令牌%}
{{form.as_p}}
提交
{%endblock%}
我想用这张卡片代替你给我的那张
<div class="card-deck">
<div class="card">
<img class="card-img-top" src=".../100px200/" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
<div class="card">
<img class="card-img-top" src=".../100px200/" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
<div class="card">
<img class="card-img-top" src=".../100px200/" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
</div>
卡片标题
这是一张较长的卡片,下面的支持文本是附加内容的自然引入。这个内容有点长
上次更新是在3分钟前
卡片标题
此卡片具有以下支持文本,作为附加内容的自然引入
上次更新是在3分钟前
卡片标题
这是一张更宽的卡片,下面的支持文本是附加内容的自然引入。这张卡片的内容甚至比第一张要长,以显示等高动作
上次更新是在3分钟前
您必须将要编辑的产品实例传递到表单中
@login_required()
def edit_product(request, product_id):
product_to_edit = get_object_or_404(Product, pk=product_id)
form = NewPro(instance=product_to_edit)
if request.method == 'POST':
form = NewPro(request.POST, request.FILES, instance=product_to_edit)
if form.is_valid():
form.save()
return redirect('product')
else:
form = NewPro(instance=product_to_edit)
return render(request, "default/edit.html", {'form': form, 'product': product_to_edit})
在评论中,您询问如何在卡片中显示所有产品,以便每行有4个产品。试试这个
<div class="container">
<div class="row">
{% for product in products %}
<div class="col-sm-3">
<div class="card" style="width: 18rem;">
<img class="card-img-top" src="..." alt="Card image cap">
<div class="card-body">
<h5 class="card-title">{{ product.title }}</h5>
<p class="card-text">{{ product.description }}</p>
<a href="{% url "edit-product" product.id %}" class="btn btn-primary">Edit Product</a>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
模板:
<div class="container">
{% for product_list in products %}
<div class="row">
<div class="card-deck">
{% for product in product_list %}
<div class="card">
<img class="card-img-top" src=".../100px200/" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
{products%}中产品列表的%
{product_list%}中产品的%
卡片标题
这是一张较长的卡片,下面的支持文本是附加内容的自然引入。这个内容有点长
上次更新是在3分钟前
{%endfor%}
{%endfor%}
(希望详细信息视图模板的对象名称是产品详细信息
)是的,我在那里也犯了一个错误谢谢!)
<div class="container">
{% for product_list in products %}
<div class="row">
<div class="card-deck">
{% for product in product_list %}
<div class="card">
<img class="card-img-top" src=".../100px200/" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
<p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>