Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 Django重定向到最新创建的文章_Python_Django - Fatal编程技术网

Python Django重定向到最新创建的文章

Python Django重定向到最新创建的文章,python,django,Python,Django,我想将人们重定向到他们在提交后刚刚创建的最新文章 url不使用id,但使用slugs。我该怎么做?我在想这样的事情: 视图.py def article_id(request, slug): context = {'article_id': get_object_or_404(Article, slug=slug)} return render(request, 'article_id.html', context) @login_required(login_url='/u

我想将人们重定向到他们在提交后刚刚创建的最新文章

url不使用id,但使用slugs。我该怎么做?我在想这样的事情:

视图.py

def article_id(request, slug):
    context = {'article_id': get_object_or_404(Article, slug=slug)}
    return render(request, 'article_id.html', context)


@login_required(login_url='/user')
def article_ajouter(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST, request.FILES)

        if form.is_valid():
            save_it = form.save()
            save_it.user = request.user
            save_it.save()
            object = Article.objects.get(article_id)
            redirect(object, permanent=True) #I don't know if I am completely mistaken.
    else:
        form = ArticleForm()

    context = {'form':form}
    return render(request, 'article_ajouter.html', context)
url(r'^(?P<slug>[-\w\d]+)/$', views.article_id, name="article_detail"),
if form.is_valid():
    save_it = form.save()
    save_it.user = request.user
    save_it.save()
    return redirect('article_detail', article_id=save_it.slug)
有什么建议可以执行此重定向吗

----更新----

文章/url.py

def article_id(request, slug):
    context = {'article_id': get_object_or_404(Article, slug=slug)}
    return render(request, 'article_id.html', context)


@login_required(login_url='/user')
def article_ajouter(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST, request.FILES)

        if form.is_valid():
            save_it = form.save()
            save_it.user = request.user
            save_it.save()
            object = Article.objects.get(article_id)
            redirect(object, permanent=True) #I don't know if I am completely mistaken.
    else:
        form = ArticleForm()

    context = {'form':form}
    return render(request, 'article_ajouter.html', context)
url(r'^(?P<slug>[-\w\d]+)/$', views.article_id, name="article_detail"),
if form.is_valid():
    save_it = form.save()
    save_it.user = request.user
    save_it.save()
    return redirect('article_detail', article_id=save_it.slug)

您没有定义名为
article\u id
的局部变量,因此此代码将失败,因为它将尝试将具有该名称的视图传递给
article.objects.get()
,这毫无意义

但是,不需要进行任何查询<代码>保存它已经是你想要的文章了。如果Article类定义了一个
get\u absolute\u url
,那么这个代码就可以工作了(只需做一个更改,见下文);如果没有,则需要在重定向调用中使用URL模式名称

最后一个变化是,您需要实际返回重定向,就像您返回任何其他类型的响应一样

因此,假设您已经为您的article_id视图定义了如下所示的URL:

url(r'^articles/(?P<slug>\w+)/$', article_id, name='article_detail'),

(我还要指出,“article\u id”对于视图来说是一个奇怪的名称;它可能希望被称为“article\u detail”)

您没有定义名为
article\u id
的局部变量,因此此代码将失败,因为它会尝试将具有该名称的视图传递给
article.objects.get()
,这毫无意义

但是,不需要进行任何查询<代码>保存它已经是你想要的文章了。如果Article类定义了一个
get\u absolute\u url
,那么这个代码就可以工作了(只需做一个更改,见下文);如果没有,则需要在重定向调用中使用URL模式名称

最后一个变化是,您需要实际返回重定向,就像您返回任何其他类型的响应一样

因此,假设您已经为您的article_id视图定义了如下所示的URL:

url(r'^articles/(?P<slug>\w+)/$', article_id, name='article_detail'),
(我还要指出,“article\u id”对于视图来说是一个奇怪的名称;无论如何,它可能希望被称为“article\u detail”)

这将是您的url

url(r'^articles/(?P<slug>[\w-]+)/$', views.article_id, name='article_detail'),
url(r'^articles/(?P[\w-]+)/$),views.article\u id,name='article\u detail'),
如果出现任何其他错误,这将使其正常工作。请务必通知我

这将是您的url

url(r'^articles/(?P<slug>[\w-]+)/$', views.article_id, name='article_detail'),
url(r'^articles/(?P[\w-]+)/$),views.article\u id,name='article\u detail'),

如果出现任何其他错误,这将使其正常工作。请务必通知

我尝试过,但我遇到了此错误消息
带参数“()”的“article_detail”和关键字参数“{'article_id':'test article two'}”未找到。尝试了1种模式:[“article/(?P[-\\w\\d]+)/$”]
为什么?我在我的帖子中添加了一个更新,看看我是如何做到的。找到了它,就像下面的
return-redirect(
return-redirect”)一样工作得很好http://.../article/“+str(save_it.slug))
但我想知道是否有一种方法我不应该添加url,因为如果我更改域名,我不想更改所有url。对不起,在那里用slug替换文章id,我已经更正了答案。我尝试了,但是我遇到了以下错误消息:未找到带有参数“()”和关键字参数“{'article\u id':'test article two'}”的“article\u detail”的反向代码。尝试了1种模式:[“article/(?P[-\\w\\d]+)/$”]
为什么?我在我的帖子中添加了一个更新,看看我是如何做到的。找到了它,就像下面的
return-redirect(
return-redirect”)一样工作得很好http://.../article/“+str(save_it.slug))
但我想知道是否有一种方法我不应该添加url,因为如果我更改域名,我不想更改所有url。对不起,在那里用slug替换文章id,我已经更正了答案。