So I know what a reverse is, I just don't understand how the Keyword stuff fits into it. What I am trying to do is enable people to delete only their own posts. The delete button shows up properly on only the users own posts, however when you click "Delete" I'm getting an error, here is the error along with the code. The traceback doesn't highlight anything but if you want to see it or anything else let me know and I can add it. Also haven't been able to find any other questions on this site...
Error:
select
u_id
from
tabl1 tb
inner join CTEE f on f.aid = tb.a_id
group by
u_id
Colorsets App views.py
MC_PREVIEW_TEXT
Colorsets app urls.py
'$(variableName)'
Project urls.py
NoReverseMatch at /colorsets/delete/7/
Reverse for 'index' with keyword arguments '{'username': 'garrett', 'pk': 7}' not found. 1 pattern(s) tried: ['$']
Colorset_confirm_delete.html
from django.shortcuts import render
from colorsets.forms import ColorForm
from colorsets import models
from colorsets.models import ColorSet
from django.utils import timezone
from django.contrib.auth import authenticate,login,logout
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse,reverse_lazy
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin
from braces.views import SelectRelatedMixin
from django.views.generic import (TemplateView,ListView,
DetailView,CreateView,
UpdateView,DeleteView)
# Create your views here.
#def index(request):
# return render(request,'index.html')
class PostListView(ListView):
model = ColorSet
def get_queryset(self):
return ColorSet.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
class CreateColorSetView(LoginRequiredMixin,CreateView):
login_url = '/login/'
redirect_field_name = 'index.html'
form_class = ColorForm
model = ColorSet
def form_valid(self,form):
self.object = form.save(commit=False)
self.object.user = self.request.user
self.object.save()
return super().form_valid(form)
class DeletePost(LoginRequiredMixin,SelectRelatedMixin,DeleteView):
model = models.ColorSet
select_related = ('user',)
success_url = reverse_lazy('index')
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(user_id=self.request.user.id)
def delete(self,*args,**kwargs):
messages.success(self.request,'Post Deleted')
return super().delete(*args,**kwargs)
Colorset_list.html (serving as my index):
from django.conf.urls import url
from colorsets import views
app_name = 'colorsets'
urlpatterns = [
url(r'^new/$',views.CreateColorSetView.as_view(),name='new_color'),
url(r'delete/(?P<pk>\d+)/$',views.DeletePost.as_view(),name='delete'),
]
答案 0 :(得分:0)
只要您的主urls.py
没有提出任何争议:
urlpatterns = [
...
url(r'^$',views.PostListView.as_view(),name='index'),
...
]
您应该删除colorset_confirm_delete.html
处传递的所有参数,并在没有它们的情况下调用反向:
<a class="btn btn-simple btn-large" href="{% url 'index' %}">Cancel</a>