У меня есть проект django, в котором пользователь может создать сообщение и выбрать категорию, в которой оно должно быть. В моем текущем коде есть 2 категории («действие» и «спорт») с использованием 4 представлений, 1 представление отображается все категории: 1 содержит форму для загрузки сообщения, а 2 других представления отображают только одну из категорий. Я хочу сделать так, чтобы все пользователи, которые сделали сообщение, могли видеть сообщения других людей, если нет, они должны создавать его; это своего рода проблема, поскольку, если пользователь вводит URL-адрес в браузере, он сможет видеть сообщения других людей, даже если пользователь не создал их. Я знаю, что в файле views.py должны быть некоторые операторы if, но я уже пробовал несколько способов сделать это, и это все еще не работает. Любая идея решить эту проблему помогает.
models.py
CATEGORY_CHOICES = (
('action', 'action'),
('sports', 'sports'),
)
class Mates(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='usermates', unique=True)
categories = models.CharField(choices=CATEGORY_CHOICES, default="choose...", max_length=10)
req_bio = models.CharField(max_length=400)
req_image = models.ImageField(upload_to='requestmates_pics', null=True, blank=True, default=False)
views.py (matesmain отображает все сообщения, mates_action только сообщения, относящиеся к категории действий, mates_sports только для спорта category и mates отображает форму для создания сообщения)
def matesmain(request):
contents = Mates.objects.all()
action = Mates.objects.filter(categories='action')
sports = Mates.objects.filter(categories='sports')
context = {
'contents': contents,
'action' : action,
'sports' : sports,
}
print("nice3")
return render(request, 'mates.html', context)
def mates_action(request):
action = Mates.objects.filter(categories='action')
context = {
'action' : action,
}
print("nice3")
return render(request, 'mates-action.html', context)
def mates_sports(request):
sports = Mates.objects.filter(categories='sports')
context = {
'sports' : sports,
}
print("nice3")
return render(request, 'mates-sports.html', context)
def mates(request):
if request.method == 'POST':
form_mates = MatesForm(request.POST, request.FILES)
if form_mates.is_valid():
instance = form_mates.save(commit=False)
instance.user = request.user
instance.save()
return redirect('mates-main')
print('succesfully uploded')
else:
form_mates = MatesForm()
print('didnt upload')
return redirect('mates-main')
urls.py
urlpatterns = [
path('mates', views.mates, name='mates'),
path('mates-main', views.matesmain, name='mates-main'),
path('mates/action', views.mates_action, name='mates-action'),
path('mates/sports', views.mates_sports, name='mates-sports'),
]
Если у вас есть вопросы, дайте мне знать в комментариях;)