如何从views.py重新启动django服务器以使python代码中的本地化更改生效

如何从views.py重新启动django服务器以使python代码中的本地化更改生效,python,django,python-2.7,Python,Django,Python 2.7,我不熟悉python和django。我已经开始了一个翻译项目。我让用户从UI中选择语言。来自language_localize.html页面的Post请求将调用my views.py方法language_localize def language_localize(request): print "inside language_localize.." if request.method == "GET": print "inside GET request" _id = re

我不熟悉python和django。我已经开始了一个翻译项目。我让用户从UI中选择语言。来自language_localize.html页面的Post请求将调用my views.py方法language_localize

def language_localize(request):
print "inside language_localize.."
if request.method == "GET":
    print "inside  GET request"
    _id = request.GET.get('language')
    print "_id="+str(_id)
    if _id == None :
        request.session['django_language'] = 'en'
        print "Language set to English"

    elif str(_id) == "en":
        request.session['django_language'] = 'en'
        print "Language set to English"

    elif str(_id) == "de":
        request.session['django_language'] = 'de'
        print "Language set to German"

    elif str(_id) == "fr":
        request.session['django_language'] = 'fr'
        print "Language set to French"


return HttpResponseRedirect(reverse('homepage'))
这将更改我的UI(用户界面)内容以显示翻译的字符串。所有的翻译框架都完成了

但每次更改语言时,我都需要通过按Cntrl+c并在控制台上执行“python2.7 manage runserver 0.0.0.0:8060”来重新启动服务器,以使更改生效

是否有任何python命令可以重新启动服务器,以便我可以在我的语言中使用本地化方法自动重新启动服务器?或者是否有其他方式使更改对UI产生影响

顺便说一下,我在同一个应用程序目录下有locale/directory,views.py。而且我还有一个text_translation.py,它包含所有带有ugettext标记的字符串,用于转换。每次显示页面时,urls.py都会调用views.py下的特定方法,views.py方法从text_translation.py获取字符串,并使用变量“params”将其呈现到html文件并显示

我正在使用python2.7和django1.5

任何帮助都将不胜感激。 提前感谢。

既然您所需要的一切都已经是框架的一部分,并且有很好的文档记录,为什么还要重新设计(方形)轮子呢


我找到了答案。在后端使用“惰性翻译”,仅当请求到达时才将字符串加载到HTML页面

from django.utils.translation import ugettext_lazy as _

这解决了我的问题。谢谢您的帮助。

您的模板文件的内容是什么?它不需要重新启动。我可以看到您正在会话中存储区域设置。但是您是否使用会话值来呈现正确的模板?Hi@manu现在我使用django的默认方法来选择bruno desthuilliers建议的语言。但仍然面临同样的问题。你能读一下我为bruno desthuilliers的回答写的评论吗,包括我目前的代码状态。使用text_translation.py提供后端字符串(添加了ugettext标记)。My views.py方法只读取这些字符串并将其呈现到相应的html页面。在html页面上,我使用了示例:“{{dns_text.portal}}”类标记来显示字符串。但是,在选择语言时,只有带有trans标记的html页面上的字符串被翻译。因此,为了获得具有完整翻译的页面,我仍然需要重新启动服务器。来自后端[text_translation.py-->views.py-->html页面]的字符串仍然没有被翻译。我哪里出错了?你可以用trans-tag这样的东西
{%trans-dns\u text.portal%}
@manu-Yes使用“trans”标记是一种解决方案,它适合我。但它是用于html页面上的字符串的。我的大多数字符串都来自后端,也就是text_translation.py。因此,使用“惰性翻译”和“trans”标记解决了我的问题。谢谢@bruno desthuilliers,您的建议对我很有帮助。现在我不再使用我的方法,而是使用默认Django的Django.views.i18n.set_language()方法和表单,如文档中所述。现在我有了一个选择语言的表单。但是在选择语言时,只有带有{%trans%}标记的HTML内容才会被翻译。我在带有“ugettext”标记的“text_translation.py”中有大多数字符串,我正在从各自的views.py方法将其渲染为HTML。在Html中,我使用Ex:“{dns_text.portal}}”类标记来显示字符串。这些字符串仍然需要重新启动服务器才能生效。请帮助我