gpt4 book ai didi

python - django - 允许用户在数据库中设置某些内容

转载 作者:行者123 更新时间:2023-11-29 14:16:34 26 4
gpt4 key购买 nike

我想让用户通过单击国旗来更改网站的语言。

在我的 models.py 文件中,我有:

class RegularUser(models.Model):
(...)
language = models.CharField(max_length = 10, null=True, blank=True, choices=[(a, _(b)) for (a,b) in settings.LANGUAGES], verbose_name=_("Language"))

我还在那里做了一个功能:

def set_language(self, new_lang):
lllang = self.language
lllang = new_lang

在我的 html 文件中,我有:

function setLang(lang){
language = document.getElementById("language")
lang_form = document.getElementById("language_form")
language.value= lang
lang_form.submit()
{{request.user.get_profile.set_language(lang) }}
}

此函数设置为某个按钮“onclick”。
这应该做两件事:
1.立即更改语言(完成)
2. 更改数据库中的 uset 语言,这样下次我们登录时 - 它将像我们现在设置的那样(它不起作用:( )我收到这样的错误:

   TemplateSyntaxError at /

Could not parse the remainder: '("lang")' from 'request.user.get_profile.set_language("lang")'

只是告诉 - 如果我会放:

   {{request.user.get_profile.get_language}}

然后我就得到了我的语言的代码,所以没问题。models.py 中的 get_language 函数:

def get_language(self):
if self.language:
return self.language
elif self.location and self.location.country:
return self.location.country.iso.lower()[:2]
else:
return None

嗯...有什么帮助吗?我是否只是以错误的方式给出了“lang”,或者我在 Django 中没有得到任何东西?

最佳答案

在 Django 模板中,不能使用参数调用 Python 函数。请参阅https://docs.djangoproject.com/en/1.4/topics/templates/#variables 。这就是为什么当您编写 {{request.user.get_profile.get_language}} 时不会收到错误消息(实际上,您的函数是在不带参数的情况下调用的,并且产生的异常被 Django 吞没)。

此外,您不能在服务器端的 Python 函数中使用 lang 参数,该参数是客户端 JavaScript 函数参数。尝试使用 AJAX 调用该函数 - 您需要为此添加另一个 View 函数,我强烈建议您不要使用纯 JavaScript,而使用像 jQuery 这样的库。

对于您的实际问题(让用户设置他的首选语言),已经有了 a function for thatDjango's internationalization package .

关于python - django - 允许用户在数据库中设置某些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com