首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -从页面重定向传递一个参数

Django -从页面重定向传递一个参数
EN

Stack Overflow用户
提问于 2018-08-23 18:09:24
回答 2查看 337关注 0票数 0

我刚开始使用Python和Django,希望在成功的表单注册后将用户重定向到主页--注册的头部按摩更改为“您已经成功注册了”。在重定向后不更改按摩的代码如下:

urls.py:

代码语言:javascript
复制
urlpatterns = [
    path('', IndexView.as_view(), name = 'index'),
    path('register/', views.register, name = 'register'),
]

views.py:

代码语言:javascript
复制
class IndexView(TemplateView):
template_name = 'first_ap/index.html'
def get_context_data(self, *args, **kwargs): 
    t_user = 'Hello my friend'
    context = {
        'viva':t_user
    }
    return context

def register(request):
if request.method == "POST":
    form = RegForm(request.POST)
    if form.is_valid():
        new_user = form.save(commit=False)
        new_user.set_password(form.cleaned_data['password'])
        new_user.save()
        return redirect('index')
else:
    form = RegForm()
    return render(request, 'first_ap/register.html', {'form': form})

在html文件中,我将:

代码语言:javascript
复制
<h1>{{ viva }}!</h1>

在将“你好我的朋友”重定向到“您已成功注册”之后,我应该如何修改代码以更改上下文?我尝试了几种选择,但都失败了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-23 18:24:08

为什么不直接将消息保存在一个对象变量中:

代码语言:javascript
复制
class IndexView(TemplateView):
    template_name = 'first_ap/index.html'
    text='Hello my friend'
    def get_context_data(self, *args, **kwargs): 
        context = {
            'viva':self.text
        }
        return context

  def register(request):
    if request.method == "POST":
        form = RegForm(request.POST)
        if form.is_valid():
            IndexView.text='You have registered'
            new_user = form.save(commit=False)
            new_user.set_password(form.cleaned_data['password'])
            new_user.save()
            return redirect('index')
    else:
        form = RegForm()
        return render(request, 'first_ap/register.html', {'form': form})
票数 0
EN

Stack Overflow用户

发布于 2018-08-23 18:20:50

溶液

代码语言:javascript
复制
from django.urls import reverse

class IndexView(TemplateView):
    template_name = 'first_ap/index.html'
    def get_context_data(self, *args, **kwargs):
        # request.GET contains the query parameters, check if `first_visit` is 1 or not
        is_first_visit = self.request.GET.get('first_visit', 0) == "1"

        if is_first_visit is False:
            t_user = 'Hello my friend' 
        else:
            t_user = 'You have successfully registered'
        context = {
            'viva': t_user
        }
        return context

def register(request):
    if request.method == "POST":
        form = RegForm(request.POST)
        if form.is_valid():
            new_user = form.save(commit=False)
            new_user.set_password(form.cleaned_data['password'])
            new_user.save()

            # add a query parameter to indicate user's first visit
            return redirect(reverse('index') + "?first_visit=1")
    else:
        form = RegForm()
        return render(request, 'first_ap/register.html', {'form': form})
  • 成功注册后,将查询参数first_visit作为1(随机值)添加到重定向调用中。
  • 使用self.request.GET dict访问查询参数
  • 根据first_visit的值更改上下文值
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51991879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档