точное количество просмотра страницы в Django

Quick Disclaimer: у меня нет большого опыта работы с PIL, поэтому я не знаю, как удалить уже нарисованный текст. Может быть, вы можете понять это самостоятельно. Но кроме этого, я знаю кое-что о tkinter. Моя идея заключается в следующем:

Привязать функцию к событию (кнопка 1 удерживается и перемещается), которая будет постоянно определять положение мыши внутри окна и рисовать новый текст при этом. положение, удаляя предыдущий текст.

    import...
    ...

    def func_image():
        img_window = tk.Toplevel()
        ...
        ...
        draw = ImageDraw.Draw(photo)
        draw.text((50,50),text=text.get(),fill='red',font=fonty)
        ...
        def move_text(event):
            # here you would delete your previous text
            x = event.x
            y = event.y
            draw.text((x,y),text=text.get(),fill='red',font=fonty

        img_window.bind('', move_text)

При этом, я думаю, было бы лучше использовать Canvas.create_text (подробнее на effbot.org ), чтобы написать свой текст на изображении. Это действительно легко перетащить текст на Canvas, вот небольшой пример:

import tkinter as tk

root = tk.Tk()

def change_position(event):
    x = event.x
    y = event.y

    # 20x20 square around mouse to make sure text only gets targeted if the mouse is near it
    if text in c.find_overlapping(str(x-10), str(y-10), str(x+10), str(y+10)):
        c.coords(text, x, y)  # move text to mouse position

c = tk.Canvas(root)
c.pack(anchor='n')

text = c.create_text('10', '10', text='test', fill='red', font=('arial', 18))  # you can define all kinds of text options here
c.bind("", change_position)

root.mainloop()

10
задан kapa 4 May 2012 в 17:22
поделиться

4 ответа

Вы можете написать промежуточное ПО django и поймать request.url, а затем настроить таблицу со столбцами url / доступов. Остерегайтесь транзакций для одновременного обновления. Если у вас есть проблемы с загрузкой, вы можете использовать memcached с incr или добавить функцию и периодически обновлять таблицу базы данных, чтобы избежать блокировок транзакций.

0
ответ дан 4 December 2019 в 04:53
поделиться

You could create a table with unique visitors of the pages, e.g. VisitorIP + X-Forwarded-For content, User-Agent string along with a PageID of some sorts. If the data itself is irrelevant, you can create a md5/sha1 hash from these values (besides the PageID of course). Be warned however that this table will grow really fast.

I'd advise against setting cookies for that purpose. They have a limited size and with many visited pages by the user, you could reach that limit and make the solution unreliable. Also it makes it harder to cache such page on client-side (see Cacheability), since it becomes interactive content.

0
ответ дан 4 December 2019 в 04:53
поделиться

You could give each user cookie, that expires at the end of the day, containing a unique number. If he reloads a page you can check wether she has been counted already that day.

0
ответ дан 4 December 2019 в 04:53
поделиться

Насколько мне известно, в настоящий момент ни один из браузеров не отправляет на сервер какие-либо сообщения / заголовки, в которых говорится, был ли запрос от обновления или нет.

Единственный способ, которым я могу не учитывать, что пользователь обновляет страницу, - это отслеживать IP-адреса и время, когда пользователь просматривает страницу, а затем, если пользователь последний раз просматривал страницу менее 30 минут назад, скажем, вы бы отклонили его как обновить и не увеличить счетчик просмотров страницы.

Большинство обновлений страниц IMO в любом случае следует считать просмотром страницы, поскольку единственная причина, по которой у меня есть обновление, - это видеть новые данные которые могли быть добавлены, или случайное случайное обновление / перезагрузка после сбоя браузера (что было бы отклонено указанным выше методом).

1
ответ дан 4 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: