【发布时间】:2020-10-01 16:41:25
【问题描述】:
我不知道为什么我会收到这个错误我是 Django 新手我研究了很多但我没有找到答案请在给我答案时尽可能多地解释我想学习的内容但是如果你不想没问题 谢谢, 这是我的 Views.py
from django.views.generic import TemplateView
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from home.forms import HomeForm
from home.models import Post, Friend
class HomeView(TemplateView):
template_name = 'home/home.html'
def get(self, request):
form = HomeForm()
posts = Post.objects.all().order_by('-created')
users = User.objects.exclude(id=request.user.id)
friend = Friend.objects.filter(current_user=request.user)
friends = friend.users.all()
args = {
'form': form, 'posts': posts, 'users': users, 'friends': friends
}
return render(request, self.template_name, args)
def post(self, request):
form = HomeForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.save()
text = form.cleaned_data['post']
form = HomeForm()
return redirect('home:home')
args = {'form': form, 'text': text}
return render(request, self.template_name, args)
def change_friends(request, operation, pk):
friend = User.objects.get(pk=pk)
if operation == 'add':
Friend.make_friend(request.user, friend)
elif operation == 'remove':
Friend.lose_friend(request.user, friend)
return redirect('home:home')
这是我的models.py
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
post = models.CharField(max_length=500)
user = models.ForeignKey(User, on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Friend(models.Model):
users = models.ManyToManyField(User)
current_user = models.ForeignKey(User, related_name='owner', null=True, on_delete=models.CASCADE)
@classmethod
def make_friend(cls, current_user, new_friend):
friend, created = cls.objects.get_or_create(
current_user=current_user
)
friend.users.add(new_friend)
@classmethod
def lose_friend(cls, current_user, new_friend):
friend, created = cls.objects.get_or_create(
current_user=current_user
)
friend.users.remove(new_friend)
追溯 1
Traceback (most recent call last):
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\exception.py", line 47,
in inner
response = get_response(request)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\base.py", line 179, in
_get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py", line 70, in v
iew
return self.dispatch(request, *args, **kwargs)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py", line 98, in d
ispatch
return handler(request, *args, **kwargs)
File "C:\Users\daghe\Desktop\Alone-Osama\home\views.py", line 17, in get
friends = friend.users.all()
AttributeError: 'QuerySet' object has no attribute 'users'
这是我的代码,如果您看到一些便宜的代码,请原谅:D
追溯 2:
Traceback (most recent call last):
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "C:\Users\daghe\Desktop\Alone-Osama\home\views.py", line 25, in get
return render(request, self.template_name, args)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\loader.py", line 62, in render_to_string
return template.render(context, request)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\backends\django.py", line 61, in render
return self.template.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 170, in render
return self._render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 162, in _render
return self.nodelist.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\defaulttags.py", line 312, in render
return nodelist.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 938, in render
bit = node.render_annotated(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py", line 905, in render_annotated
return self.render(context)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\defaulttags.py", line 446, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\urls\base.py", line 87, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\urls\resolvers.py", line 685, in _reverse_with_prefix
raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at /
Exception Value: Reverse for 'create' not found. 'create' is not a valid view function or pattern name.
【问题讨论】:
-
将前一行中的
filter替换为get。
标签: python django django-queryset attributeerror