【问题标题】:My url template not work我的网址模板不起作用
【发布时间】:2017-01-02 13:46:42
【问题描述】:

我的模板标签网址有问题。当我点击按钮时,重定向不起作用。

Django 版本 => 1.9 Python 版本 => 2.7

在我的 urls.py(main) 中有:

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)

在我的 urls.py(apps) 我有:

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'),
]

在我的views.py(apps)中我有:

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")

在我的模板 html 中,我有:

<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>

重定向不适用于此模板标签。 你能帮帮我吗:)?

【问题讨论】:

  • 我认为问题出在 {% url memory:delete %}"
  • 我忘记纠正这个错误,无论如何都不起作用:) 编辑:第一次编辑我有这个错误 html:NoReverseMatch at /memory/mon-souvenir-1/ Reverse for 'update' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'memory/(?P&lt;slug&gt;[-\\w]+)/edit/$']
  • 如何在 url 中获得“记忆”?模板在浏览器控制台中生成的最终 url 是什么?
  • 完整的 url 是:/memory/(?P[-\w]+)/edit/ 用于编辑和相同的删除
  • 我认为你应该在你的 {% url memory:delete %} 中传递“slug”

标签: python django templates django-templates


【解决方案1】:

来自这里的文档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>

你应该把你的'slug'放在你的按钮中,像这样(如果slug是200)

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

通常看起来像这样:

{% 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 %}

【讨论】:

  • 谢谢!!!!!!!!!只是我已经编辑了 to if 的条件,它可以工作:) {% if instance.slug %} &lt;button type="button" class="btn btn-primary"&gt;&lt;a id="back-profile" href="{% url 'memory:update' instance.slug %}"&gt; Update&lt;/a&gt;&lt;/button&gt; &lt;button type="button" class="btn btn-primary"&gt;&lt;a id="back-profile" href="{% url 'memory:delete' instance.slug %}"&gt; Delete&lt;/a&gt;&lt;/button&gt; {% endif %} 做得好 Aison ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多