Django传参
1.“?”传参
1.模板页面
主路由
urlpatterns = [
path('admin/', admin.site.urls),
path('',include('web.urls',namespace='index'))
]
{% for goods in goods_page %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ goods.name }}</td>
<td>{{ goods.price }}</td>
<td><img src="{{ goods.image }}" alt="图片" width="100" height="100"></td>
<td>
<a href="{% url 'index:detail' %}?id={{ goods.id }}" >修改</a>
<a href="{% url 'index:delete' goods.id %}" >删除</a>
</td>
</tr>
{% endfor %}
在<a href="{% url 'index:detail' %}?id={{ goods.id }}" 中,?之后为传递的参数
不用“命名空间”的?传参
<script type="text/javascript">
$("#pagination").pagination({
currentPage:{{ current_page }},
totalPage:{{ total_page }},
callback:function (current) {
#注意:加上'http://'
window.location.href="http://127.0.0.1:8000/?p="+current
}
});
</script>
2(1).子路由页面urls.py(有:类视图)第一种方法
1.path('detail/', views.DetailView.as_view(), name='detail'),
3(1)views.py 接收参数
def get(self,request):
gid=request.GET.get('id') #从路由中取出参数 注意:这里是request.GET而不是request.POST。 #id是模板中自动生成的,所以用GET。如果是手动填上去的用POST获取。
goods=models.Goods.objects.filter(id=gid).first()
return render(request,'detail.html',{'goods':goods})
2(2).路由页面urls.py(无:类视图)第二种方法
path('delete/int:gid', views.DeleteView.as_view(), name='delete'),
3(3).views.py接收参数()
class DeleteView(View):
def get(self,request,gid): #取出路由中的参数
goods=models.Goods.objects.filter(id=gid).first()
goods.delete()
return redirect(reverse('index:show'))