如何避免"The number of GET/POST parameters exceeded"错误?



我已经在我的Django网站上创建了一个自定义管理页面,在该网站上只允许管理员,并且能够更改对象及其属性。对象的数量很多(确切的9220(,在管理页面上,输入字段与该模型中的对象相同。

这是代码:

<form action="{% url 'Home:AdminPrices' %}" id="mainForm" method="post">
{% csrf_token %}
{% for item in prices %}
    <ul class="row" style="width: 100%;padding: 0;background-color: white;height: 100px;display: flex;justify-content: left;white-space: nowrap;margin-bottom: 0;margin-top: 0;">
        <div style="width: 33.333333333333336%;background-color: white;display:  block;color: black;font-size: 0.8em;white-space: nowrap;text-align: center;font-family: 'Lato';padding-top: 25px;">{{ item.hashname }}</div>
        <div style="width: 33.333333333333336%;background-color: white;display:  block;color: black;font-size: 1.2em;text-align: center;font-family: 'Lato';padding-top: 25px;">{{ item.sug }}</div>
        <div style="width: 33.333333333333336%;background-color: white;display:  block;color: black;font-size: 1.2em;text-align: center;font-family: 'Lato';"><input type="number" value="{{ item.actual }}" name="prices_{{ item.actual }}" style="width: 100%;height: 100%;padding-bottom: 25px;background-color: white;border: 0;color: black;font-size: 1.2em;text-align: center;font-family: 'Lato';"></input></div>
    </ul>
{% endfor %}
    <input type="submit" id="mainSubmit" style="display: none;" name="submitPrices"></input>
</form>
<div onclick="document.getElementById('mainForm').submit();" style="background-color: black;border-radius: 5px;position: fixed;display: block;height: 50px;width: 200px;bottom: 0;left:0;right:0;margin: 0 auto;color: white;font-size: 1.5em;text-align: center;padding-top: 12.5px;cursor: pointer;">Submit</div>

按下提交按钮后,网站崩溃并提示此错误:

2017-06-25 10:05:53,158:超过get/post参数的数量 settings.data_upload_max_number_fields。2017-06-25 10:05:53,860:错误 运行WSGI应用程序2017-06-25 10:05:53,934:Toomanyfieldssent: 超过get/post参数的数量 settings.data_upload_max_number_fields。2017-06-25 10:05:53,934:
文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/core/core/handlers/wsgi.py", 第170行,在 call 2017-06-25 10:05:53,935:响应= self.get_response(请求(2017-06-25 10:05:53,935:2017-06-25 10:05:53,935:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/core/core/handlers/base.py", 第124行,在get_response 2017-06-25 10:05:53,935:响应= self._middleware_chain(请求(2017-06-25 10:05:53,936:2017-06-25 10:05:53,936:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/core/core/handlers/handlers/exception.py", 第41行,内部2017-06-25 10:05:53,936:响应= response_for_exception(请求,exc(2017-06-25 10:05:53,936: 2017-06-25 10:05:53,936:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/core/core/handlers/handlers/exception.py", 第76行,在响应_FOR_EXEPCEPION 2017-06-25 10:05:53,937:
响应= debug.technical_500_response(请求, *sys.exc_info((, status_code = 400(2017-06-25 10:05:53,937:2017-06-25 10:05:53,937:
文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/views/debug.py", 第84行,技术_500_Response 2017-06-25 10:05:53,937:html = reporter.get_traceback_html((2017-06-25 10:05:53,937:2017-06-25 10:05:53,937:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/views/debug.py", 第316行,在get_traceback_html 2017-06-25 10:05:53,938:C = context(self.get_traceback_data((,use_l10n = false(2017-06-25 10:05:53,938:2017-06-25 10:05:53,938:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/views/debug.py", 第293行,在get_traceback_data 2017-06-25 10:05:53,938:
'Filtered_post':self.filter.get_post_parameters(self.request(, 2017-06-25 10:05:53,938:2017-06-25 10:05:53,938:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/views/debug.py", 第167行,在get_post_parameters 2017-06-25 10:05:53,938:返回 请求。-post 2017-06-25 10:05:53,938:2017-06-25 10:05:53,939:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/core/core/handlers/wsgi.py", 第128行,在_get_post 2017-06-25 10:05:53,939:
self._load_post_and_files((2017-06-25 10:05:53,939:2017-06-25 10:05:53,939:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/http/request.py", 第311行,在_load_post_and_files 2017-06-25 10:05:53,939:
self._post,self._files = querydict(self.body, 编码= self._encoding(,Multivaluedict((2017-06-25 10:05:53,939: 2017-06-25 10:05:53,940:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/http/request.py", 第397行,in init 2017-06-25 10:05:53,940:对于键,值 limited_parse_qsl(query_string,** parse_qsl_kwargs(:2017-06-25 10:05:53,940:2017-06-25 10:05:53,940:文件 "/home/mtonskins/tonskins/selement/senv/local/lib/python2.7/site-packages/django/utils/http.py", 第350行,有限_Parse_QSL 2017-06-25 10:05:53,940:' get/post参数的数量超过

我不太确定如何避免它,可以更改设置并专门为此视图设置不同的限制吗?还是我可以将所有这些字段作为一个列表提交?如果没有,那么解决方案是什么?我可以将DATA_UPLOAD_MAX_NUMBER_FIELDS设置指定为某些视图吗?谢谢。

https://docs.djangoproject.com/en/1.11/topics/settings/#altering-settings-ating-at--runtime

您提到的解决方案是增加了设置中DATA_UPLOAD_MAX_NUMBER_FIELDS的大小。祝你好运!

在设置中。值或禁用检查此值,其中默认值为1000:

例如

# to increase value
DATA_UPLOAD_MAX_NUMBER_FIELDS = 102400
# to disabled check 
DATA_UPLOAD_MAX_NUMBER_FIELDS = None

在以下URL上检查Django文档:https://docs.djangoproject.com/en/3.2/ref/settings/#data-upload-max-number-fields

我希望这有帮助。

最新更新