Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重定向()无效_Python_Django_Django Views - Fatal编程技术网

Python 重定向()无效

Python 重定向()无效,python,django,django-views,Python,Django,Django Views,重定向函数工作不正常。它正在显示错误 NoReverseMatch at/post/new/Reverse用于带有参数的“post_detail” 未找到“()”和关键字参数“{'pk':9}”。已尝试0个模式: [] 这是我的观点 from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.models import User from django.views.generi

重定向函数工作不正常。它正在显示错误

NoReverseMatch at/post/new/Reverse用于带有参数的“post_detail” 未找到“()”和关键字参数“{'pk':9}”。已尝试0个模式: []

这是我的观点

from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.models import User
from django.views.generic import View
from django.utils import timezone
from django.contrib.auth import ( 
    authenticate, 
    get_user_model, 
    login, 
    logout,
    )
from .forms import UserLoginForm, UserRegisterForm, UserForm, PostForm
from .models import Post

def login_view(request):
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']
        u = User.objects.get(username=username)
        posts = objects.for_user(request.user)
        if username and password:
            user = authenticate(username= username, password= password)
            if not user:
                return render(request, 'post/login.html',{'error_message': 'Incorrect username or password'})
        if not user.is_active:
            return render(request, 'post/login.html', {'error_message': 'Your account has been disabled'})
        if user.is_active:
            login(request, user)
            return render(request, 'post/home.html', {'u' : u, 'posts': posts})
return render(request, 'post/login.html')

class register_view(View):
    form_class = UserRegisterForm
    template_name = 'post/register.html'

    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form}) 

    def post(self, request):
        form = self.form_class(request.POST)   

        if form.is_valid():
            user = form.save(commit=False)
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user.set_password(password)
            user.save()

            new_user = authenticate(username= username, password=     password)

            if new_user is not None:

                if user.is_active:        
                    login(request, new_user)
                    return redirect('post/home.html')

        return render(request, self.template_name, {'form' : form})

def logout_view(request):
    logout(request)
    form = UserForm(request.POST or None)

    return render(request, 'post/login.html', {'form' : form})

def post_list(request):
    posts =     Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')

    return render(request, 'post/post_list.html', {'posts': posts})


def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)

    return render(request, 'post/post_detail.html', {'post': post})

def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = PostForm()

     return render(request, 'post/post_edit.html', {'form': form})

使用HttpResponseRedirect而不是重定向函数

from django.http import HttpResponseRedirect

return HttpResponseRedirect(reverse('post_detail', kwargs={'pk':pk}))
也许这应该管用。
不能使用重定向函数传递参数。它仅用于重定向。如果要在重定向时传递参数,HttpResponseRedirect是最好的方法。

可能会很有用。无法进一步提供帮助,因为您还没有显示URL模式。我就是这样做的。但另一个错误是/post/new/name“reverse”处的NameError未定义。请更正它。但另一个错误是,找不到参数“()”和关键字参数“{pk':12}”的'post_detail'的NoReverseMatch at/post/new/Reverse。尝试了0个模式:[]您可以发布您的​ url.py。。另外,如果您在“project/urls.py”中使用名称空间,请尝试将HttpResponseRedirect函数相反的url更改为“your_namespace:url_name”。也许它应该起作用..纠正它。我使用了返回重定向(反向('post_detail',kwargs={'pk':pk}))。谢谢你的帮助很高兴我能帮上忙。。。你能帮我个忙,投我一票吗?