سؤال

مساء الخير ،

أنا حاليا في محاولة لبناء شيء لا يصدق بسيطة داخل جوجل لمحرك تطبيقات.والهدف من ذلك هو بناء بسيط تطبيق مشاركة الصور التي سوف بالاتصال مرة أخرى على اي فون بلدي التطبيق.إنها تجربة التعلم لكل الثعبان الهدف-C.

(لقد كنت مبرمج PHP لبعض الوقت).

الهدف من إنشاء URL التي تبدو كما يلي:/img/{{ نموذج.مفتاح.id }}

المشكلة هو أنه يبدو لا يهم كيف أفعل بيثون السيناريو ، إما في نهاية المطاف مع خطأ أو ببساطة الحصول على أي شيء لعرضه على قالب صفحة ملفوفة في بيان.

بلدي التطبيق.yaml الملف:

application: randomwebappname
version: 1
runtime: python
api_version: 1

handlers:
- url: /media
  static_dir: media

- url: /b/.*
  script: beta.py
  login: required

- url: /.*
  script: main.py

نموذج عملي (داخل beta.py):

class Photo(db.Model):
    author = db.StringProperty()
    title = db.StringProperty()
    slugline = db.StringProperty()
    content = db.StringProperty(multiline=True)
    coordinates = db.StringProperty()
    avatar = db.BlobProperty()
    date = db.DateTimeProperty(auto_now_add=True)

صفي لعرض الصورة في صفحة:

class ViewPage(webapp.RequestHandler):
def get(self, id):


template_values = {
    'image': image,
}

path = os.path.join(os.path.dirname(__file__), 'templates/view.html')
self.response.out.write(template.render(path, template_values))

حاولت كل من التالية في صفي لكن كلها تنتهي بالفشل.حاولت لهم مع المفتاح مفتاح.اسم المفتاح.معرف في عنوان URL:

photos = db.Query(Photo).filter('key', slug).fetch(limit=1)

photos = Photo.get_by_key_name(id)

photos = Photo.get_by_key_name(key)

key = db.Key.from_path('Photo', id) 

photos = db.GqlQuery("SELECT * FROM Photo WHERE __key__ = :key", key=key)

photos = db.get(photo_key)

photos = self.request.get("id")

بلدي URL:

application = webapp.WSGIApplication([
    ('/b/', HomePage),
    ('/b/upload', UploadPage),
    ('/b/add', MainPage),
    ('/b/img', Image),
    ('/b/img/([-\w]+)', ViewPage),
    ('/b/submit', Submission)
], debug=True)

قالب الاستعلام:

{% for photo in photos %}
<img alt="" title="" src="img?img_id={{ photo.key }}" alt="main image" />
{% endfor %}

هذا يبدو أنه سيكون شيئا بسيطة بشكل لا يصدق وأنا أعلم أنا في عداد المفقودين شيء ، ولكن أنا لست متأكدا من أين هي.أود أن أكتب هذا في PHP, ولكن أود مفهوم لمحرك تطبيقات و قلت أعلاه ، بيثون تجربة التعلم.

كملاحظة جانبية, هذا التطبيق لا يعمل على الصفحة الرئيسية للموقع.أنا ببساطة GQL الاستعلام وإخراج الصور بشكل جيد لكنه لم يفشل عند محاولة الذهاب إلى /img/id صفحات.

أي نصيحة يا شباب (وبنات)?شكرا مقدما!

تحديث #1:
حسب جوناثان الطلب ، وفيما يلي صورة الصف:

class Image (webapp.RequestHandler):
    def get(self):
        photo = db.get(self.request.get("img_id"))
        if photo.avatar:
            self.response.headers['Content-Type'] = "image/png"
            self.response.out.write(photo.avatar)
        else:
            self.response.out.write("No image")

أيضا, بعد نشر هذا أدركت أن هذا كان جزءا من المشكلة كما كنت تحاول أن تفعل /img كما في الصورة الفعلية و /img/ عرض عرض الصفحة.لقد تغيرت منذ ذلك والآن لدينا نموذج العمل.لكنه مبني على مفتاح غير المفتاح.id:

URL:

('/b/i', ViewPage)

جديد ViewPage الدرجة:

class ViewPage(webapp.RequestHandler):
    def get(self):
    image = db.get(self.request.get("id"))  

    template_values = {
        'image': image,
    }

    path = os.path.join(os.path.dirname(__file__), 'templates/view.html')
    self.response.out.write(template.render(path, template_values))

لذا...للحصول على عرض الصفحة (التي تتضمن تعليقات من هذا القبيل) ، عليك الآن أن تذهب إلى العنوان التالي:/ب/أنا ؟ img_id={{ صورة.مفتاح }}

أتلست الصفحة هو العمل الآن, ولكن أنا أفضل أن أحصل على الصفحة لتبدو كما يلي كما جاء أعلاه:/ب/img/{{ صورة.مفتاح.id }}

تحديث #2:ViewPage الطبقة المحدثة وكذلك URL:

class ViewPageV2(webapp.RequestHandler):
    def get(self, id):
    images = [ db.get(id) ]

    template_values = {
        'image': image,
    }

    path = os.path.join(os.path.dirname(__file__), 'templates/view.html')
    self.response.out.write(template.render(path, template_values))

رابط جديد:('/ب/صورة/([-\w]+)', ViewPageV2),

وفيما يلي لقطات اثنين أحدهما إثبات الهوية "1" الموجودة الخطأ التي تأتي معها حاليا.

النص البديل http://img215.imageshack.us/img215/9123/screenshot20091130at937.png

النص البديل http://img215.imageshack.us/img215/2207/screenshot20091130at938.png

مرة أخرى, شكرا جميعا!

هل كانت مفيدة؟

المحلول

طريقة بسيطة الاستيلاء على كل منهم:

photos = Photo.gql('ORDER BY __key__')

لمزيد من المعلومات ، راجع الاستفسارات على مفاتيح في التطبيق محرك مستندات.

هل أنت تخزين الصور الخاصة بك مع المفاتيح المعرفة مسبقا?

photo = Photo(key_name="xzy123")
photo.put()

ثم يمكنك استرجاعها في ViewPage:

photos = [ Photo(key_name="%s" % id) ]

انظر الحصول على كيان باستخدام مفتاح.

أخيرا, استرجاع الصور على لمحرك تطبيقات-تعيين مفتاح افتراض هذا المفتاح موجود في URL (على سبيل المثال, http://host/b/img/ahByY..., لذا تغيير القالب الخاص بك لتوليد عناوين من هذا النوع), استخدام

class ViewPage(webapp.RequestHandler):
  def get(self, id):
    photos = [ db.get(id) ]
    ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top