Django Python Appengine - PullRequest
       2

Django Python Appengine

0 голосов
/ 27 августа 2010

Я наткнулся на этот урок:

http://thomas.broxrost.com/2008/04/08/django-on-google-app-engine/

Фантастика!

Все работало.

Я просто не полностью понял приведенный ниже код, потому что по сравнению с Django он выглядит по-другому:

views.py:

def main(request):
    visitor = Visitor()
    visitor.ip = request.META["REMOTE_ADDR"]
    visitor.put()

    result = ""
    visitors = Visitor.all()
    visitors.order("-added_on")

    for visitor in visitors.fetch(limit=40):
        result += visitor.ip + u" visited on " + unicode(visitor.added_on) + u""

    return HttpResponse(result)

#model.py:

from google.appengine.ext import db

class Visitor(db.Model):
    ip = db.StringProperty()
    added_on = db.DateTimeProperty(auto_now_add=True)

Что такое Visitor ()?Кортеж списка?

А что именно делают visitor.ip, visitor.put (), members.fetch ()?

Я считаю:

visitor.ipсохраняет запрос. META ["REMOTE_ADDR"] в поле базы данных.

visitor.put () сохраняет его.

members.fetch (limit = 40) извлекает его из базы данных.

То, что я пытался сделать, - это табличка с перечнем каждого IP ниже следующего.

Я верил:

<p><ol><Li> {{ result }} </li></ol></p>

Подойдет.

Но это не так.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 августа 2010

Посетитель - это класс, и каждое поле в нем представляет столбец в вашей базе данных.Когда вы делаете visitor = Visitor(), вы по существу создаете новую строку в своей базе данных.Вызов visitor.put () - это то, что фактически фиксирует его в базе данных.Visitors.all() возвращает все строки в БД (это либо список, кортеж, либо словарь), так что visit.fetch () - это просто операция над этим.работа заключается в том, что ваша функция в views.py не указывает какой-либо шаблон.Это взято из учебника по Django: http://docs.djangoproject.com/en/1.0/intro/tutorial03/

from django.template import Context, loader
from mysite.polls.models import Poll
from django.http import HttpResponse

def index(request):
    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
    t = loader.get_template('polls/index.html')
    c = Context({
        'latest_poll_list': latest_poll_list,
    })
    return HttpResponse(t.render(c))

Параметр для Context () является словарем.Строка слева - это имя переменной в шаблоне, а справа - фактическая переменная, которой она соответствует.В вашем примере вы можете использовать {'mylist': result}, а в своем шаблоне вы можете использовать {{ mylist }} вместо {{ result }}

Также необходимо убедиться, что в каталоге settings.py указан шаблон каталогав приведенном выше примере) является polls / index.html в этом шаблоне dir.

0 голосов
/ 27 августа 2010

Не зная ничего о движке приложения, я бы сказал: Visitor() возвращает экземпляр класса Visitor. Следующий шаг (visitor.ip = request.META["REMOTE_ADDR"]) устанавливает атрибут экземпляра, созданного в первой строке.

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