简体   繁体   English

不允许重定向Django

[英]DisallowedRedirect Django

I am doing a tutorial regarding django and I have two errors: 我正在做有关django的教程,但有两个错误:

  1. When I try to create a plant that plant is saved in the data but I get this error: 当我尝试创建植物时,该植物已保存在数据中,但出现此错误:

     Exception Type: DisallowedRedirect Exception Value: Unsafe redirect to URL with protocol 'data' 
  2. when I try to edit then I get this error 当我尝试编辑时出现此错误

     Exception Type: NoReverseMatch Exception Value: Reverse for 'plants' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

Looking forward to find my mistake. 期待发现我的错误。

views.py: views.py:

def create_plant(request):

    if not request.user.is_authenticated():
        return render(request, 'data/login.html')
    elif request.method == "POST":
        form = PlantForm(request.POST)
        if form.is_valid():
            plant = form.save(commit=False)
            plant.save()
            return redirect('data:plants.html', slug = plant.slug)
    else:
        form=PlantForm()
    template = 'data/create_plant.html'
    context = {'form': form, }
    return render(request, template, context)

def edit_plant(request, slug):

    plant = get_object_or_404(Plant, slug=slug)
    if request.method=="POST":
        form = PlantForm(request.POST, instance=plant)
        if form.is_valid():
            plant = form.save(commit=False)
            plant.save()
            return redirect('data:plants')
    else:
        form = PlantForm(instance=plant)
    template = 'data/create_plant.html'
    context = {'form': form}
    return render(request, template, context)  

urls.py: urls.py:

from django.conf.urls import url
from . import views

app_name = 'data'

urlpatterns = [

    url(r'^$', views.home, name='home'),
    url(r'^plants/$', views.index, name='index'),
    url(r'^create_plant/$', views.create_plant, name='create_plant'),
    url(r'^logout_user/$', views.logout_user, name='logout_user'),
    url(r'^login_user/$', views.login_user, name='login_user'),
    url(r'^register/$', views.register, name='register'),
    url(r'^plants/(?P<slug>[-\w]+)/$',views.detail, name='detail'),
    url(r'^plants/(?P<slug>[-\w]+)/edit/$', views.edit_plant, name='edit_plant'),
    url(r'^(?P<plant_id>[0-9]+)/delete_plant/$', views.delete_plant, name='delete_plant'),]

问题出在return redirect('data:plants.html',slug = plant.slug),应该是return redirect('data:index')–乔治3小时前

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM