如何在 POST 请求后返回重定向到 Django 中的上一页

2024-01-08

我正在编写一个新闻网站,在详细新闻页面中,有一个评论喷泉,如果人们想发表评论,他们需要先登录。我想让他们登录成功后,页面可以返回到上一个新闻页面。

这是我的观点.py:

def newsDetailView(request, news_pk):
    news = News.objects.get(id=news_pk)
    title = news.title
    author = news.author_name
    add_time = news.add_time
    content = news.content
    category = news.category
    tags = news.tag.annotate(news_count=Count('news'))

    all_comments = NewsComments.objects.filter(news=news)

    comment_form = CommentForm(request.POST or None)

    if request.method == 'POST' and comment_form.is_valid():
        comments = comment_form.cleaned_data.get("comment")
        comment = NewsComments(user=request.user, comments=comments, news=news)
        comment.save()

    return render(request, "news_detail.html", {
        'title': title,
        'author': author,
        'add_time': add_time,
        'content': content,
        'tags': tags,
        'category': category,
        'all_comments': all_comments,
        'comment_form': comment_form
    })

这是我的 news_detail.html:

                    {% if user.is_authenticated %}
                        <form method="POST" action="">{% csrf_token %}
                            <div class="form-group">
                                <label for="exampleFormControlTextarea1"><h5>评论 <i class="fa fa-comments"></i></h5>
                                </label>
                                <textarea id="js-pl-textarea" class="form-control" rows="4"
                                          placeholder="我就想说..." name="comment"></textarea>
                                <div class="text-center mt-3">
                                    <input type="submit" id='js-pl-submit' class="btn btn-danger comment-submit-button" value="Submit Comemmt">
                                    </input>
                                </div>
                            </div>
                        </form>


                    {% else %}   
                   <span>Please Login or register first</span>                         
                            <a class="btn btn-primary mb-5"
                                                         href="{% url 'login' %}?next={{ request.path }}">登录</a>
                        <a class="btn btn-danger mb-5" href="{% url 'register' %}?next={{ request.path }}">注册</a>

                    {% endif %}

这是我的登录视图:

class LoginView(View):

def get(self, request):
    return render(request, "login.html", {})

def post(self, request):
    login_form = LoginForm(request.POST)
    if login_form.is_valid():
        user_name = request.POST.get("username", "")
        pass_word = request.POST.get("password", "")
        user = authenticate(username=user_name, password=pass_word)
        if user is not None:
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
            else:
                return render(request, "login.html", {"msg": "用户未激活!"})
        else:
            return render(request, "login.html", {"msg": "用户名或密码错误!"})
    else:
        return render(request, "login.html", {"login_form": login_form})

我有一个login.html 和register.html。它们工作得很好。

有人知道如何在我的特殊情况下做到这一点吗?非常感谢!


First:

def login(request):
    if request.method == 'GET':
    request.session['login_from'] = request.META.get('HTTP_REFERER', '/')

Second:

if request.method == 'POST':
    #TODO: 
    #Redirect to previous url
    return HttpResponseRedirect(request.session['login_from'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 POST 请求后返回重定向到 Django 中的上一页 的相关文章

随机推荐

  • 如何将 Kafka 承诺的消费者偏移量更改为所需的偏移量

    我有卡夫卡流应用程序 我的应用程序正在成功处理事件 如何使用所需的偏移量更改 Kafka 提交的消费者偏移量以重新处理 跳过事件 我试过如何更改主题的起始偏移量 https stackoverflow com questions 29791
  • Zend 2 中两个表的并集

    我想用 zf2 中的 where 子句合并两个表 表1 app followers表2 应用程序用户其中条件可以是任何东西并按updated date 排序 请让我知道 zend 2 的查询 Thanks Using UNION is ZF
  • 在OData中引入自定义属性

    在我的数据库用户表中 我有名为 DateDeleted 的 DateTime 字段 当用户存在时该字段为空 并且当用户 被删除 时设置为正确的值 我想知道是否有一种方法可以为 User 实体引入 IsDeleted 属性 以便 http o
  • 如何将解析后的数据从一个单元格提取到另一个单元格

    给定一个电子表格单元格 其中包含一个由一系列连字符连接的字符段组成的字符串 我需要提取最后一个段 例如 考虑 A 列包含数据字符串 例如XX XXX X XX XX G10 where X表示任意字符 我需要在 B 列中输入什么公式才能得到
  • 使用 Javascript 在多个 CSS 文件之间切换

    我目前正在尝试制作一系列按钮 网站的用户可以单击这些按钮来在不同的 CSS3 文件之间进行更改 这将改变某些效果 为了实现这个目标 我需要某种方式来访问 href example1 css 我的 HTML 中的标签 并将其更改为 href
  • Jenkins - 最大并发作业数

    我可以在 Jenkins 中同时运行的最大作业数是多少 Jenkins 作业的最大数量取决于您在主站和从站中设置的限制 通常 我们会限制核心数量 但您的里程可能会有所不同 具体取决于可用内存 磁盘速度 SSD 的可用性以及源代码的重叠 对于
  • 如何更改 F# 交互式换行符

    在 fs 文件中 换行符表示为 r n 但在 F 交互窗口中是 n 在我当前正在尝试解决的问题中 多行文字字符串的长度很重要 因此 当我在 F 交互窗口中测试代码时出现问题 因为字符串的长度与正常执行时的长度不同 我希望有一个选项可以将 F
  • jQuery DataTables sDom 命令不起作用

    我需要左上角的 过滤器 和右上角的 大小 但不起作用 document ready function jQuery example dataTable sDom lt top fl gt rt lt bottom ip gt lt clea
  • 在vba中一次循环遍历所有可用的自动筛选条件

    我想知道是否有一种方法可以获取列表中所有不同的自动过滤条件 以便迭代每个条件 最后复制并粘贴每个不同的表 这些表在迭代时会显示在单独的工作表中 理想情况下 这将运行 n 次 ActiveSheet Range AllRows AutoFil
  • 我应该关心 React Redux 应用程序中的状态变化率吗?

    我正在使用 React Redux 和 Websocket 实现 评估 实时 Web 应用程序 在服务器上 我的数据集以每秒大约 32 次更改的速度发生更改 每次更改都会使用 Websocket 向应用程序发送一条异步消息 异步消息在我的
  • 用于 Java 的 LZ4 和 Zstd

    是否有适用于 LZ4 和 ZStd 的最佳 Java 压缩库 我尝试过 apache commons 这是 zstd jni 实现 String fileURL TestFileUtil getFileURL TestFileCategor
  • 实现 (.m) 文件中的 IBOutlet 实例变量

    假设我有一个视图控制器或窗口控制器 它 像往常一样 是相应 XIB 文件中的 文件所有者 众所周知 这是很常见的IBOutlet然后您可以使用 Interface Builder 在 XIB 中连接控制器类 到目前为止 我一直在创造IBOu
  • 选择以下划线(_)开头的所有对象键

    我需要在以下对象中创建一个包含所有键 而不是值 的数组 其中键以下划线开头 在下面的代码片段中我试图得到getSubscriptions 回来 foo1 foo2 let myObj foo0 test foo1 test foo2 tes
  • 使用 JavaScript 在浏览器中触发全屏 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在Javascript中制作全屏窗口 伸展到整个屏幕 https stackoverflow com questions 1125084 how to make in javascript ful
  • 禁用 DrawerLayout 的稀松布触摸手势

    我需要禁用稀松布上的触摸手势 红色突出显示的部分 我只想通过滑动来关闭抽屉 问题是 当抽屉布局打开并且我需要从红色突出显示部分下方的 ListView 中选择一个元素时 发生的情况是抽屉关闭 只有此时我才能从 ListView 中选择一个元
  • Jenkinsfile 参数化构建中的环境和参数之间有什么关系?

    最近 我在与同事一起进行 Jenkins 构建时遇到了一些难题 他一直在使用params VARIABLE and env VARIABLE可以互换并且没有任何问题 与此同时 我开始在他通过这行代码的环境对参数对象的调用之一中收到空对象错误
  • 通过在 Javascript 中单击外部来关闭下拉菜单(教程说明)

    我尝试通过以下方式使用 Javascript 实现打开和关闭下拉菜单的方法this https www w3schools com howto howto js dropdown aspw3schools com 上的教程 虽然 显示 下拉
  • PHP - 一小时后检查 json 值

    我创建了一个函数 它使用 json 获取 Twitter 计数 但是 我想在一段时间后 例如一个小时 再次检查一次 但目前它每次加载页面时都会进行检查 以及这会影响页面加载时间 已经有一个 PHP 函数可以完全满足我的要求 但我不记得它了
  • HTTP GET 请求、ASP - 我迷路了!

    将 VBScript 与 ASP 结合使用 我尝试设置一个 HTTP GET 请求 该请求将访问一个页面 该页面又生成一行 ASCII 非 HTML 然后 我想将 ASCII 行 包含由分号分隔的 4 个值 推断回原始 ASP 页面中的 4
  • 如何在 POST 请求后返回重定向到 Django 中的上一页

    我正在编写一个新闻网站 在详细新闻页面中 有一个评论喷泉 如果人们想发表评论 他们需要先登录 我想让他们登录成功后 页面可以返回到上一个新闻页面 这是我的观点 py def newsDetailView request news pk ne