• Как добавлять картинки в Django к статьям?

    @deliro
    django-ckeditor
    02dbbc1c96c242aebd130f0738b59d81.png

    Если нужен ImageField:
    class YourModel(Model):
        # ...
        image = ImageField(upload_to='images/', null=True, blank=True)

    Параметр upload_to является обязательным и принимает строку или функцию. Изображения будут складываться в папку media/upload_to, где upload_to - то, что вы указали в параметре upload_to. Функция (если строка вас не устраивает) будет вызвана и в неё передадутся два аргумента - instance и filename - экземпляр модели и имя файла. Вернуть вы должны путь до файла вместе с файлом (например: images/hello/world/some_file.jpg). Например, я использовал такую:
    def generate_path(instance, filename):
        ext = filename.rsplit('.', 1)[-1]
        h = md5(instance.user.username.encode()).hexdigest()
        result = 'photos/%s/%s/%s.%s' % (h[:2], h[2:4], h[4:], ext)
        path = os.path.join(settings.MEDIA_ROOT, result)
        if os.path.exists(path):
            os.remove(path)
        return result

    Такая иерархия нужна, чтобы в одной папке не накапливалось много файлов, иначе система может работать долго.

    Updated
    Обязательно укажите MEDIA_ROOT и MEDIA_URL в настройках. Допустим, так:
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    MEDIA_URL = '/media/'
    Ответ написан
  • Как добавлять картинки в Django к статьям?

    sim3x
    @sim3x
    Если использовать только одну картинку
    - добавить поле для картинки в модель
    - добавить плейсхолдер картинки в темплейт

    # models.py
    class Article(models.Model):
         title = models.CharField(max_length=255)
         content = models.TextField()
         img = models.ImageField(upload_to='/article', 
                          height_field=100, width_field=100)


    Для простоты размещаем код, который ты, в дальнейшем, перенесешь в views.py из urls.py!
    https://docs.djangoproject.com/en/dev/topics/class...
    #urls.py
        url(r'^article/(?P<pk>[0-9]+)/$', DetailView.as_view(
    context_object_name="article",
    model=Article,
    template_name="article.html"
    ), name='article-detail'),


    #article.html
    <h1>{{ article.title }}
    <img src="{{ article.img.url }}">
    <content>{{ article.context }}


    Если интересует rich editor

    https://pypi.python.org/pypi/django-summernote

    https://github.com/summernote/django-summernote
    Ответ написан
    9 комментариев
  • Как пишут ботов для игр (или для программ с интерфейсом)?

    riky
    @riky
    Laravel
    Инфы море на одном только хабре habrahabr.ru/search/?q=%5B%D0%B1%D0%BE%D1%82%5D&ta...

    от себя добавлю что основные методы это
    1) простейший понятный способ - поиск нужного элемента на экране и кликание по экрану, или клик по указанным координатам. я в основном использую этот способ, так как вмешательство в игру минимальное - ее не надо ломать, для онлайн игр - меньше шансов получить бан. Подходит для простых игр, в основном те что 2D пошаговые.
    Гуглить отправку событий мыши и клавиатуры на выбранном вами ЯП (java robots например).
    Минусы - игра должна быть постоянно открыта на экране и иметь фокус (можно решить - запустив игру с ботом в виртуалке).

    2) для онлайн игр - изучение протокола обмена данными с сервером. нужно изучать куда отправляются/откуда получаются данные и в каком формате. пишем программу которая эмулирует клиент игры. очень хороший способ - для очень интерактивных игр - максимальная скорость. Способ довольно сложный надо реверсить протокол (гуглить wireshark) и возможно само приложение (гуглить дизассемблирование / декомпиляция). Если игра браузерная - то все может быть проще - запросы и ответы можно смотреть в консоли браузера. Очень перспективный способ - визуальный клиент не обязателен - можно делать армию ботов и размещать на серверах - скорее всего они будут потреблять немного памяти и процессора и возможности впечатляющие.

    3) для десткопных игр - патчинг памяти запущенной игры. варианты от простых типа - поменять очки/деньги в игре (artmoney) это в основном для не онлайн игр, и до очень сложных - подменить адрес вызова системной функции - например функции отрисовки directx - то есть меняем адрес вызова на свою функци (недавно была серия статей на эту тему, к сожалению не нашел побыстрому). Либо как разновидность - декомпиляция игры - изменение логики - компиляция (гуглить все что связано с крекерством, создание кейгенов). Для этого варинта требуется довольно высокая квалификация, понимание того как работает игра. Также игры могут иметь защиту от этого.

    Кстати понимание того как работают игры/программы - одно из главных в этом деле. Поэтому в первую очередь следует заняться тем чтобы понять как работает конкретная игра, а потом уже думать на каком этапе можно вмешаться в ее логику чтобы достичь нужного эффекта. Изучайте также средства тестирования игр/приложений - с помощью их также можно малой кровью добится хороших результатов.
    Ответ написан
    5 комментариев