Django密码重置生成HTTP链接而不是https

时间:2019-01-02 18:14:07

标签: django python-3.x nginx

我正在使用Django的内置密码重置机制。它会发送一封电子邮件,其中包含一个包含令牌的链接,单击该链接可用于重置密码。但是,正在生成的链接正在使用模板:

{% trans "Please go to the following page and choose a new password:" %}
{% block reset_link %}
{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
{% endblock %}

在这里,{{ protocol }}返回的是 http 而不是 https 。 我的nginx服务器会将所有http请求重定向到https基本链接(主页)。

因此,密码重置链接无效,因为生成的链接错误。它只是通过nginx转到首页。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

这可能是您的nginx配置中的X-Forwarded-Protocol问题。

您需要将其添加到您的位置块中:

    protected void onPostExecute(String response) {
        String inf1="";
        String inf2="";
    try {

        JSONObject jsonObject =new JSONObject(response);
        JSONArray result = jsonObject.getJSONArray("result");


        for(int x=0; x < result.length(); x++) {
            JSONObject collegeData = result.getJSONObject(x);
            inf1 = collegeData.getString("title");
            inf2 = collegeData.getString("text");

            // Here I want to put these "inf1" and "inf2 strings into
            // textviews and add these textviews into an existing linear layout
            // with id: feedFetch"               

        }


    } catch (JSONException e) {
        e.printStackTrace();
    }


}

有关更多信息,请参见:https://djangodeployment.com/2017/01/24/fix-djangos-https-redirects-nginx/