2016-08-26 4 views
0

Ich habe ein Problem mit meiner Vorlagen-Tag-URL. Die Umleitung funktioniert nicht, wenn ich auf die Schaltfläche klicke.Meine URL-Vorlage funktioniert nicht

Django version => 1.9 Python version => 2.7

In meinem urls.py (Haupt-) ich habe:

from django.conf import settings 
from django.conf.urls import include, url 
from django.conf.urls.static import static 
from django.contrib import admin 
from memoryposts.views import home, profile, preregistration 

urlpatterns = [ 
    url(r'^$', home, name="home"), 
    url(r'^grappelli/', include('grappelli.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^memory/', include("memoryposts.urls", namespace="memory")), 
    url(r'^avatar/', include('avatar.urls')), 
    url(r'^accounts/', include('registration.backends.hmac.urls')), 
    url(r'^preregistration/', preregistration, name="preregistration"), 
    url(r'^profile/', profile, name="profile"), 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

In meinem urls.py (Apps) Ich habe:

from django.conf.urls import url 
from django.contrib import admin 
from .views import (
    memory_list, 
    memory_create, 
    memory_detail, 
    memory_update, 
    memory_delete, 
) 

urlpatterns = [ 
    url(r'^$', memory_list, name='list'), 
    url(r'^create/$', memory_create, name='create'), 
    url(r'^(?P<slug>[-\w]+)/$', memory_detail, name='detail'), 
    url(r'^(?P<slug>[-\w]+)/edit/$', memory_update, name='update'), 
    url(r'^(?P<slug>[-\w]+)/delete/$', memory_delete, name='delete'), 
] 

In meinem views.py (Apps) ich habe:

from django.contrib import messages 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render, get_object_or_404, redirect 
from .models import Post 
from .forms import PostForm 

def home(request): 
    return render(request, "base.html") 

def profile(request): 
    return render(request, "profile.html") 

def preregistration(request): 
    return render(request, "preregistration.html") 

def memory_create(request): 

    form = PostForm(request.POST or None, request.FILES or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
     messages.success(request,"Succès !") 
     return HttpResponseRedirect(instance.get_absolute_url()) 
    context = { 
     "form": form, 
    } 
    return render(request, "memory_create.html", context) 

def memory_detail(request, slug=None): 
    instance = get_object_or_404(Post, slug=slug) 
    context = { 
     "title":instance.title, 
     "instance":instance, 
    } 
    return render(request, "memory_detail.html", context) 

def memory_list(request): 
    queryset = Post.objects.all() 
    context = { 
     "object_list": queryset, 
    } 
    return render(request, "memory_list.html", context) 

def memory_update(request, slug=None): 

     instance = get_object_or_404(Post, slug=slug) 
     form = PostForm(request.POST or None, request.FILES or None, instance=instance) 
     if form.is_valid(): 
      instance = form.save(commit=False) 
      instance.save() 
      messages.success(request,"Mis à jour !") 
      return HttpResponseRedirect(instance.get_absolute_url()) 

     context = { 
      "title":instance.title, 
      "instance":instance, 
      "form": form, 
     } 
     return render(request, "memory_create.html", context) 

def memory_delete(request, slug=None): 
    instance = get_object_or_404(Post, slug=slug) 
    instance.delete() 
    messages.success(request, "Supprimer !") 
    return redirect("posts:list") 

In meiner Vorlage html ich habe:

<button type="button" class="btn btn-primary"><a id="back-profile" href="{% url 'memory:update' %}"> Update</a></button> 

<button type="button" class="btn btn-primary"><a id="back-profile" href="{% url 'memory:delete' %}"> Delete</a></button> 

Die Umleitung nicht mit diesem Template-Tag arbeiten. kannst du mir bitte helfen :)?

+0

Ich denke, Problem ist hier {% url Speicher: löschen%} " – Windsooon

+0

Ich vergess, diesen Fehler zu korrigieren, nicht arbeiten ein YWAY :) EDIT: 1. Beitrag bearbeiten ich diesen Fehler html haben: 'NoReverseMatch an/Speicher/mon-Souvenir-1/ umge für 'update' mit Argumenten '()' und Keyword-Argumente '{}' nicht gefunden. 1 Muster versucht (en): [u'memory/(? P [- \\ w] +)/edit/$ '] ' – cpoudevigne

+0

Wie erhalten Sie Ihre' Erinnerung 'in URL? Und was ist die letzte URL, die die Vorlage in Ihrer Browser-Konsole generiert? – Windsooon

Antwort

0

Von doc hier URL dispatcher

<button type="button" class="btn btn-primary"><a id="back-profile" href="{% url 'memory:update' %}"> Update</a></button> 

<button type="button" class="btn btn-primary"><a id="back-profile" href="{% url 'memory:delete' %}"> Delete</a></button> 

Sie stellen sollten, was Sie 'Slug' in Ihrem Knopf, so (wenn Slug ist 200)

<button type="button" class="btn btn-primary"><a id="back-profile" href="{% url 'memory:update' 200 %}"> Update</a></button> 

wird normalerweise wie folgt aussehen:

{% for slug in slug_list %} 
<button type="button" class="btn btn-primary"><a id="back-profile" href="{% url 'memory:update' slug %}"> Update</a></button> 
{% endfor %} 
+0

DANKE !!!!!!!! nur ich habe bearbeite die Bedingung für, wenn und es funktioniert :) '{% if instance.slug%} {% endif%} ' Gut gemacht Aison;) – cpoudevigne