Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中添加默认(隐藏)值以形成模板?_Python_Django_Django Templates_Django Urls - Fatal编程技术网

Python 如何在Django中添加默认(隐藏)值以形成模板?

Python 如何在Django中添加默认(隐藏)值以形成模板?,python,django,django-templates,django-urls,Python,Django,Django Templates,Django Urls,给定Django.db模型类: class P(models.Model): type = models.ForeignKey(Type) # Type is another models.Model class name = models.CharField() 如果希望创建具有指定类型的新p,即如何使“type”成为默认的隐藏字段(来自用户),其中类型如下: http://x.y/P/new?type=3 因此,在表单中不会出现“type”字段,但在保存p时,其类型将具有i

给定Django.db模型类:

class P(models.Model):
   type = models.ForeignKey(Type) # Type is another models.Model class
   name = models.CharField()
如果希望创建具有指定类型的新p,即如何使“type”成为默认的隐藏字段(来自用户),其中类型如下:

http://x.y/P/new?type=3 
因此,在表单中不会出现“type”字段,但在保存p时,其类型将具有id 3(即type.objects.get(pk=3))

第二,当使用一般的Django视图时,如何通过url.py在url中指定“默认”类型(可能(&I)),即

urlpatterns = ('django.generic.views.create_update',
  url(r'^/new$', 'create_object', { 'model': P }, name='new_P'),
)

我发现这很难描述,这可能是问题的一部分非常感谢您的投入

要在模型中具有默认外键:

mydefault = Type.objects.get(pk=3)

class P(models.Model):
   type = models.ForeignKey(Type, default=mydefault) # Type is another models.Model class
   name = models.CharField()
请注意,使用
pk=x
非常难看,因为在理想情况下,您不应该关心主键等于什么。尝试通过其他属性访问所需的对象

这是在URL中设置默认值的方式:

# URLconf
urlpatterns = patterns('',
    (r'^blog/$', 'blog.views.page'),
    (r'^blog/page(?P<num>\d+)/$', 'blog.views.page'),
)

# View (in blog/views.py)
def page(request, num="1"):
    # Output the appropriate page of blog entries, according to num.
#URLconf
urlpatterns=模式(“”,
(r“^blog/$”、“blog.views.page”),
(r“^blog/page(?P\d+/$”,“blog.views.page”),
)
#视图(在blog/views.py中)
def页面(请求,num=“1”):
#根据num输出相应页面的博客条目。
在上面的示例中,两个URL模式都指向同一个视图——blog.views.page——但第一个模式没有捕获URL中的任何内容。如果第一个模式匹配,page()函数将使用num的默认参数“1”。如果第二个模式匹配,page()将使用正则表达式捕获的任何num值


窗口小部件
django.forms.widgets.HiddenInput
将使您的字段隐藏

在大多数情况下,我认为您会发现任何隐藏的表单值也可以指定为url参数。换言之:

<form action="new/{{your_hidden_value}}" method="post">
....
</form>

....
在URL.py中:

^/new/(?P<hidden_value>\w+)/
^/new/(?P\w+)/

我自己更喜欢这种技术,因为只有在我需要跟踪模型实例的主键时,我才真正发现自己需要隐藏的表单字段——在这种情况下,“edit/pkey”url用于启动编辑/返回表单,保存时收到帖子。

如果您使用Andrew在url中包含隐藏值的方法,并且仍然希望使用Django的内置表单模板,那么有一些方法可以排除隐藏字段