重新加载当前页面时,Django不刷新我的请求对象

时间:2010-05-30 09:08:48

标签: javascript python django request refresh

我有一个Django网站,我希望可以用不同的语言查看。直到今天早上一切正常。这是交易。我转到我的说法关于我们页面,它是英文的。下面是更改语言按钮,当我按下它时,所有“神奇地”翻译成保加利亚语就像我想要的那样。另一方面,我有一个JS菜单,用户可以从中浏览产品。我点击'T-Shirt'然后一个子菜单打开,下面按下包含不同的类别 - 男人,女人,孩子。该链接引导我到一个页面,其中列出了我要求的确切衣服。但是......当我尝试改变语言时,没有任何反应。我去了关于页面,从那里改变语言,回到衣服目录,语言改变了......

我不会粘贴一些代码。

这是我的更改按钮代码:

function changeLanguage() {
    if (getCookie('language') == 'EN') {
        setCookie("language", 'BG');
    } else {
        setCookie("language", 'EN');
    }
    window.location.reload();
}

我的关于我们页面:

@base
def aboutUs(request):
    return """<b>%s</b>""" % getTranslation("About Us Text", request.COOKIES['language'])

@base方法:

def base(myfunc):
    def inner_func(*args, **kwargs):
        try:
            args[0].COOKIES['language'] 
        except:
            args[0].COOKIES['language'] = 'BG'

        # raise Exception(request)

        # if I am in the AboutUs page 
        # and I click on the language change button
        # the cookie value in the request object changes
        # if however I am in the displayClothes page
        # the value stays the same

        # some code I removed

        contents = myfunc(*args, **kwargs)

        return render_to_response('index.html', {'title': title, 'categoriesByCollection': categoriesByCollection.iteritems(), 'keys': enumerate(keys), 'values': enumerate(values), 'contents': contents, 'btnHome':getTranslation("Home Button", args[0].COOKIES['language']), 'btnProducts':getTranslation("Products Button", args[0].COOKIES['language']), 'btnOrders':getTranslation("Orders Button", args[0].COOKIES['language']), 'btnAboutUs':getTranslation("About Us Button", args[0].COOKIES['language']), 'btnContacts':getTranslation("Contact Us Button", args[0].COOKIES['language']), 'btnChangeLanguage':getTranslation("Button Change Language", args[0].COOKIES['language'])})
    return inner_func

目录页面:

@base
def displayClothes(request, category, collection, page):
    clothesToDisplay = getClothesFromCollectionAndCategory(request, category, collection)

    contents = ""

    # some code I removed        

    return """%s""" % (contents)

让我解释一下,您不必对我发布的大量代码感到震惊。你不必理解它,甚至不需要全部了解它。我发布它只是为了以防万一,因为我真的无法理解这个bug的起源。

现在这就是我缩小问题的方法。每次我想知道我的请求对象中有什么内容时,我正在调试“提升异常(请求)”。当我将它放在我的aboutUs方法中时,每次按语言按钮时语言cookie值都会改变。但不是当我在displayClothes方法。语言保持不变。我还尝试将异常行放在@base方法的开头。事实证明那里的情况完全一样。当我在“关于我们”页面并单击按钮时,我的请求对象中的语言会发生变化,但是当我在目录页面中按下按钮时,它将保持不变。

这就是我所能找到的,而且我不知道Django如何区分我的页面以及以何种方式。

P.S。我认为JavaScript工作得很完美,我已经用多种方式对它进行了测试。

谢谢,我希望你们中的一些人能够阅读这篇文章,并且不要犹豫,要求提供更多代码摘录。

1 个答案:

答案 0 :(得分:1)

这是太多的代码无法通读。你真的需要努力削减它。

如果您确定该错误位于displayClothes中的某个位置,那么我会将位置注释掉,直到您不再收到错误为止。但是在那个视图中似乎没有任何改变cookie的东西,所以我不知道你会有多成功。另外,请确保您检查AboutUs请求中的实际内容,而不仅仅是认为的内容。

附注:您正在将HTML直接编码到视图中。我很确定你真的不想这样做 - Django有一个模板是有原因的。