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

标签 python mysql database django model

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

在我的 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/

相关文章:

javascript - PySide 将 HTML 中的按钮连接到 PySide 插槽

python - 在 python 中使 itertools.combinations 计算多进程?

python - scikit-learn 矢量化词汇表,多个术语映射到同一索引

python - 名称错误 : global name 'numpy' is not defined

mysql - MySQL 中的条件 JOIN 查询

python - 括号和引号被注入(inject)到 SQL 查询的返回结果中

当将 COUNT 与 GROUP BY 一起使用时,MySQL 包含零行

php - Cakephp 3.0 多表

mysql - 插入表格5分钟后自动更新表格

mysql - 有时 MySQL 会停止使用正确的索引