Получение NoReverseMatch___ Reverse for 'for_user' with keyword arguments '{'username': ''}'' not found. Проверен 1 шаблон(ы): ['/(?P<имя пользователя>[-\\\w]+)/$'].
Прошу прощения, если повторяю уже отвеченный вопрос. Я пытался найти ответ на этот вопрос, но не могу найти способ обойти эту ошибку.
NoReverseMatch at /groups/ Обратный поиск для 'for_user' с ключевыми аргументами '{'username': ''}'' не найден. Проверено 1 шаблон(ы): ['posts/by/(?P[-\w]+)/$']
models.py
'''
enter code here
from groups.models import Group
# Create your models here.
from django.contrib.auth import get_user_model
User = get_user_model()
class Post(models.Model):
user = models.ForeignKey(User,related_name='posts',
on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now=True)
message = models.TextField()
message_html = models.TextField(editable='False')
group = models.ForeignKey(Group,related_name='posts',
null=True,blank=True,on_delete=models.CASCADE)
def __str__(self):
return self.message
def save(self,*args,**kwargs):
self.message_html = misaka.html(self.message)
super().save(*args,**kwargs)
def get_absolute_url(self):
return reverse(
'posts:single',
kwargs={'username':self.user.username,
'pk':self.pk})
class Meta:
ordering = ['-created_at']
unique_together = ['user','message']
''' Views.py
'''
enter code here
class PostList(SelectRelatedMixin,generic.ListView):
model = models.Post
select_related = ('user','group')
class UserPosts(generic.ListView):
model = models.Post
template_name = "posts/user_post_list.html"
def get_queryset(self):
try:
self.post_user = User.objects.prefetch_related("posts").get(
username__iexact=self.kwargs.get("username")
)
except User.DoesNotExist:
raise Http404
else:
return self.post_user.posts.all()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["post_user"] = self.post_user
return context
class PostDetail(SelectRelatedMixin,generic.DetailView):
model = models.Post
select_related = ('user','group')
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(user__username__iexact=self.kwargs.get('username'))
class CreatePost(LoginRequiredMixin,SelectRelatedMixin,generic.CreateView):
fields = ('message','group')
model = models.Post
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,generic.DeleteView):
model = models.Post
select_related = ('user','group')
success_url = reverse_lazy('posts:all')
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)
'''
'''
enter code here
##POSTS URLS
from django.urls import re_path
from . import views
app_name = 'posts'
urlpatterns = [
re_path(r'^$',views.PostList.as_view(),name='all'),
re_path(r'newpost/$',views.CreatePost.as_view(),name='create'),enter code here
re_path(r"by/(?P<username>[-\w]+)/$",views.UserPosts.as_view(),
name="for_user"),
re_path(r"by/(?P<username>[-\w]+)/(?P<pk>\d+)/$",views.PostDetail.as_view(),
name="single"),
re_path(r'delete/(?P<pk>\d+)/$',views.DeletePost.as_view(),name='delete'),
]
'''
Помогите пожалуйста. Я довольно новичок в Django, извините еще раз, если это банальная ошибка
Спасибо @Razenstein ..... Это была ошибка шаблона....
''' {% extends "groups/group_base.html" %}
{% block pregroup %}
<div class="col-md-4">
<div class="content">
{% if user.is_authenticated %}
<h2>
Welcome Back!
<a href="{% url 'posts:for_user' username=user.username
%}">@{{user.username}}</a>
</h2>
{% endif %}
'''
Я написал <a href="{% url 'posts:for_user' username=user.name
".