Set*_*eth 4 django django-generic-views
这似乎应该是显而易见的,但解决方案是在逃避我.通常我会写一个简单的视图函数,它会填充一个合适的表单并将其传递给视图,但解决方案感觉非常接近..
我有一张表格.我想使用object_id
我在网址中捕获的表单来实例化此表单,然后使用extra_context
参数将其发送到我的模板.
我有这样的事情:
class AddProductForm(forms.Form):
product = forms.IntegerField()
quantity = forms.IntegerField()
Run Code Online (Sandbox Code Playgroud)
还有这个:
url(r'^products/(?P<object_id>\d+)/$',
'django.views.generic.list_detail.object_detail',
{'queryset': Product.objects.all(),
'extra_context': {'form': AddProductForm({'product': <what?>, 'quantity': 1})},
name='product_detail'),
Run Code Online (Sandbox Code Playgroud)
有没有办法<what?>
用捕获的值替换上面的object_id
?(也许一个聪明的可调用者extra_context
可以为我制作表格?)
我担心你不能在你的urlconf中这样做.您提供的任何callable都不能接受任何参数,因此您将无法获得值?P<object_id>
.
但是,您可以在自己的视图中重用通用视图,以减少必须编写的样板量:
from django.views.generic.list_detail import object_details
from your.forms import AddProductForm
from your.models import Product
def about_pages(request, object_id=None):
qs = Product.objects.all()
f = AddProductForm({'product':object_id,'quantity':1})
return object_details(request,queryset=qs,extra_context={'form':f},template='yourtemplate.html')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1209 次 |
最近记录: |