我有一个期望两种forms的模板页面。 如果我只使用一种forms,就像在这个典型的例子中那样: if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm() 但是,如果我想用多种forms工作,我如何让视图知道我只提交了其中一个表单而不是其他表单(即它仍然是request.POST,但我只想处理提交的表单事情)吗? 这是基于答案的解决scheme ,其中, expectedphrase和bannedphrase是不同forms的提交button的名称, expectedphraseform和bannedphraseform是forms。 if request.method == 'POST': if 'bannedphrase' in request.POST: bannedphraseform = BannedPhraseForm(request.POST, prefix='banned') if bannedphraseform.is_valid(): bannedphraseform.save() expectedphraseform = ExpectedPhraseForm(prefix='expected') elif 'expectedphrase' in request.POST: expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected') if expectedphraseform.is_valid(): expectedphraseform.save() bannedphraseform = […]
假设我在models.py有以下内容: class Company(models.Model): name = … class Rate(models.Model): company = models.ForeignKey(Company) name = … class Client(models.Model): name = … company = models.ForeignKey(Company) base_rate = models.ForeignKey(Rate) 也就是说有多个Companies ,每个Companies有一系列的Rates和Clients 。 每个Client应该有一个从母公司的Rate中select的基本Rate ,而不是另一个Company's Rates 。 在创build添加Client的表单时,我想删除Company选项(因为已经通过Company页面上的“添加客户端”buttonselect了该选项),并限制该Company的Rate选项。 Django 1.0中如何解决这个问题? 我目前的forms.py文件目前只是样板文件: from models import * from django.forms import ModelForm class ClientForm(ModelForm): class Meta: model = Client views.py也是基本的: from django.shortcuts import […]
这是在Django 1.9与form_kwargs修复 。 我有一个Django窗体,如下所示: class ServiceForm(forms.Form): option = forms.ModelChoiceField(queryset=ServiceOption.objects.none()) rate = forms.DecimalField(widget=custom_widgets.SmallField()) units = forms.IntegerField(min_value=1, widget=custom_widgets.SmallField()) def __init__(self, *args, **kwargs): affiliate = kwargs.pop('affiliate') super(ServiceForm, self).__init__(*args, **kwargs) self.fields["option"].queryset = ServiceOption.objects.filter(affiliate=affiliate) 我用这样的东西来称呼这个表单: form = ServiceForm(affiliate=request.affiliate) 其中request.affiliate是login的用户。 这按预期工作。 我的问题是,我现在想把这个单一的forms变成一个formset。 我无法弄清楚的是如何在创buildformset时将联盟信息传递给各个表单。 根据这个文档,我需要做这样的事情: ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3) 然后我需要像这样创build它: formset = ServiceFormSet() 现在我怎么可以通过这种方式将affiliate = request.affiliate传递给个人表单?
我正在使用Django构build一个应用程序作为我的主力。 到目前为止,所有的都已经很好了 – 指定的数据库设置,configuration的静态目录,url,视图等。但麻烦开始偷偷摸摸的时候,我想呈现自己的美丽和自定义404.html和500.html页面。 我阅读了自定义error handling的文档,并在UrlsConf中设置了必要的configuration,创build了相应的视图,并将404.html和500.html添加到我的应用的模板目录(在settings.py中指定)。 但是,文档说, you can actually view custom error views until Debug is Off ,所以我没有closures它来testing我的东西,这是什么时候东西变狂暴! 我不仅看不到自定义的404.html(实际上,它加载,但是因为我的错误页面都包含一个graphics错误消息 – 一些不错的图像),错误页面的来源加载,但没有其他加载! 甚至没有链接的CSS或Javascript! 一般来说,一旦我设置DEBUG = False ,所有的意见将加载,但任何链接的内容(CSS,Javascript,图像等)不会加载! 发生了什么? 有什么缺less有关Static files和Debug setting ?
我遇到了一个奇怪的错误,试图在我的电脑上安装Django。 这是我input到我的命令行中的顺序: C:\Python34>python get-pip.py Requirement already up-to-date: pip in c:\python34\lib\site-packages Cleaning up… C:\Python34>pip install Django 'pip' is not recognized as an internal or external command, operable program or batch file. C:\Python34>lib\site-packages\pip install Django 'lib\site-packages\pip' is not recognized as an internal or external command, operable program or batch file. 什么可能导致这个? 编辑___________________ 按照要求,这是我inputecho%PATH% C:\Python34>echo %PATH% C:\Program Files\ImageMagick-6.8.8-Q16;C:\Program […]
我正在定义正则expression式,以便捕获url中的参数,如教程中所述。 作为HttpRequest对象的一部分,如何从url访问参数? 我的HttpRequest.GET当前返回一个空的QueryDict对象。 我想学习如何在没有库的情况下做到这一点,所以我可以更好地了解Django。
我想在Django中使用AngularJS,但是他们都使用{{ }}作为模板标签。 有没有简单的方法来改变其中一个使用其他自定义模板标签?
升级到Django 1.10后,出现错误: TypeError: view must be a callable or a list/tuple in the case of include(). 我的urls.py如下所示: urlpatterns = [ url(r'^$', 'myapp.views.home'), url(r'^contact/$', 'myapp.views.contact'), url(r'^login/$', 'django.contrib.auth.views.login'), ] 完整的追溯是: Traceback (most recent call last): File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper fn(*args, **kwargs) File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 121, in inner_run self.check(display_num_errors=True) File "/Users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/base.py", line 385, in check include_deployment_checks=include_deployment_checks, […]
我有一个设置涉及 前端服务器(Node.js,domain:localhost:3000)<—>后端(Django,Ajax,域名:localhost:8000) 浏览器< – webapp < – Node.js(服务应用程序) 浏览器(webapp) – > Ajax – > Django(服务ajax POST请求) 现在,我的问题在于CORS设置,Web应用程序使用Ajax调用后端服务器。 在铬,我不断得到 当凭证标志为真时,不能在Access-Control-Allow-Origin中使用通配符。 也不能在Firefox上工作。 我的Node.js设置是: var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', 'http://localhost:8000/'); res.header('Access-Control-Allow-Credentials', true); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }; 在Django中,我正在使用这个中间件 Web应用程序提出请求: $.ajax({ type: "POST", url: 'http://localhost:8000/blah', data: {}, xhrFields: { withCredentials: true }, […]
处理本地开发和生产服务器设置的build议方法是什么? 它们中的一些(如常量等)可以在两者中进行更改/访问,但其中一些(如静态文件的path)需要保持不同,因此每次部署新代码时都不应该被覆盖。 目前,我将所有常量添加到settings.py 。 但每当我在本地更改一些常量时,我必须将其复制到生产服务器并编辑生产特定更改的文件… 🙁 编辑:看起来像这个问题没有标准答案,我接受了最stream行的方法。