Django: отображение количества просмотров страниц на странице сведений - PullRequest
1 голос
/ 26 апреля 2020

Я хочу отобразить количество просмотров страницы на странице сведений. Я также хочу увеличить просмотр страницы на 1 в любое время, когда страница загружается в любое время. У меня есть код, который делает, но он также обновляет мой атрибут DateTime. Как я могу достичь этого, не меняя всего?

models.py

class Music(models.Model):
artist = models.CharField(max_length=300)
title = models.CharField(max_length=200, unique=True)
slug = models.SlugField(default='', blank=True, unique=True)
thumbnail = models.ImageField(blank=False)
audio_file = models.FileField(default='')
uploaded_date = models.DateTimeField(default=timezone.now)
description = RichTextUploadingField()
views = models.IntegerField(default=0)


class Meta:
    ordering = ['-uploaded_date']

def save(self):
    self.uploaded_date = timezone.now()
    self.slug = slugify(self.title)
    super(Music, self).save()

def __str__(self):
    return self.title + ' by ' + self.artist

def get_absolute_url(self):
    return reverse('music:detail', kwargs={'slug': self.slug})

views.py

def detail(request, slug):
    latest_posts = Music.objects.order_by('-uploaded_date')[:5]
    song = get_object_or_404(Music, slug=slug)
    song.views = song.views + 1
    song.save()

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Сэмми, я знаю, что вы хотели бы сделать это самостоятельно, но вам не нужно изобретать колесо, попробуйте https://pypi.org/project/django-visits/ django -видит, я все время использую его с моими проектами, и вы можете всегда настраивайте его, хорошо использует куки, отлично подходит для шляпы, которую вы ищете

0 голосов
/ 27 апреля 2020

Когда я пытался выполнить команду 'pip install django -visits', я получил следующую ошибку

ERROR: Command errored out with exit status 1:
command: 'c:\users\samuel\appdata\local\programs\python\python37\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Samuel\\AppData\\Local\\Temp\\pip-insta
ll-8t2j3cs9\\distribute\\setup.py'"'"'; __file__='"'"'C:\\Users\\Samuel\\AppData\\Local\\Temp\\pip-install-8t2j3cs9\\distribute\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__fi
le__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3c
s9\distribute\pip-egg-info'
         cwd: C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\
    Complete output (15 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\setuptools\__init__.py", line 2, in <module>
        from setuptools.extension import Extension, Library
      File "C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\setuptools\extension.py", line 5, in <module>
        from setuptools.dist import _get_unpatched
      File "C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\setuptools\dist.py", line 7, in <module>
        from setuptools.command.install import install
      File "C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\setuptools\command\__init__.py", line 8, in <module>
        from setuptools.command import install_scripts
      File "C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\setuptools\command\install_scripts.py", line 3, in <module>
        from pkg_resources import Distribution, PathMetadata, ensure_directory
      File "C:\Users\Samuel\AppData\Local\Temp\pip-install-8t2j3cs9\distribute\pkg_resources.py", line 1518, in <module>
        register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
    AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.```

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...