def change_currency(request):
settings.CURRENCY = request.POST['currency']
return HttpResponseRedirect('/')
CURRENCY = 'EUR'
<form action="{% url 'change_currency' %}"
method="POST" class="currency">
EUR
{% csrf_token %}
<input style="display: none" value="EUR" name="currency">
</form>
如果我手动更改settings.CURRENCY
变量,那么一切都像超级按钮一样工作,但是如果我创建表单并尝试更改settings.CURRENCY
,它将不起作用
在settings.py
中将有一个变量可以针对不同用户进行更改
我无法使用会话,因为我在settings.CURRENCY
中使用了filters.py
,而且我不知道如何在request.session
中使用filters.py
答案 0 :(得分:0)
首先can access request,因此session
在过滤器中。
由于多种原因,您尝试使用的解决方案不起作用。
将这样的模块对象导入另一个模块(例如myapp.views
)时:
from settings import CURRENCY
在settings.CURRENCY
模块中看不到对views
所做的更改。导入一次,并且导入时的值绑定到模块中的变量。
即使您在views
模块中更改了变量,也存在另一个问题。如果您正在运行非开发服务器(例如gunicorn),它将启动几个进程来处理请求。可能发生的情况是,对设置所做的更改由一个进程处理,而下一个请求由具有旧值的另一个工作进程处理。
应该在一个位置存储此设置。会话是一个好地方,因为它是全局的,对用户来说是私有的。