Saya memulai aplikasi di Google App Engine tepat saat aplikasi itu diluncurkan, untuk bermain dengan teknologi dan mengerjakan proyek hewan peliharaan yang telah lama saya pikirkan tetapi tidak pernah sempat saya mulai. Hasilnya adalah BowlSK . Namun, seiring perkembangannya, dan fitur telah ditambahkan, menjadi sangat sulit untuk mengatur semuanya - terutama karena fakta bahwa ini adalah proyek python pertama saya, dan saya tidak tahu apa-apa tentang itu sampai saya mulai bekerja.
Apa yang saya punya:
- Level Utama berisi:
- semua file .py (tidak tahu cara membuat paket berfungsi)
- semua template .html untuk halaman tingkat utama
- Subdirektori:
- folder terpisah untuk css, gambar, js, dll.
- folder yang menyimpan template .html untuk url jenis subdirektori
Contoh:
http://www.bowlsk.com/ maps to HomePage (paket default), template di "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 dipetakan ke ViewSeriesPage (sekali lagi, paket default), template di "games / view-series.html"
Itu jorok. Bagaimana cara saya merestrukturisasi? Saya punya 2 ide:
Folder Utama berisi: appdef, indexes, main.py?
- Subfolder untuk kode. Apakah ini harus menjadi paket pertama saya?
- Subfolder untuk template. Hirarki folder akan cocok dengan heirarki paket
- Subfolder individual untuk css, gambar, js, dll.
Folder Utama berisi appdef, indexes, main.py?
- Subfolder untuk kode + template. Dengan cara ini saya memiliki kelas penangan tepat di sebelah template, karena dalam tahap ini, saya menambahkan banyak fitur, jadi modifikasi pada satu berarti modifikasi ke yang lain. Sekali lagi, apakah saya harus menjadikan nama folder ini sebagai nama paket pertama untuk kelas saya? Saya ingin foldernya menjadi "src", tetapi saya tidak ingin kelas saya menjadi "src.WhateverPage"
Apakah ada praktik terbaik? Dengan Django 1.0 di depan mata, adakah sesuatu yang dapat saya lakukan sekarang untuk meningkatkan kemampuan saya untuk mengintegrasikannya ketika itu menjadi mesin template GAE resmi? Saya hanya akan mulai mencoba hal-hal ini, dan melihat mana yang tampak lebih baik, tetapi dukungan refactoring pyDev tampaknya tidak menangani perpindahan paket dengan sangat baik, jadi kemungkinan akan menjadi tugas yang tidak sepele untuk membuat semua ini berfungsi lagi.
sumber
Tata letak saya yang biasa terlihat seperti ini:
__init__.py
- fungsionalitas umum, termasuk kelas dasar penangan permintaanSaya dapat memberikan contoh seperti apa tampilan app.yaml, request.py, lib / init .py, dan contoh pengontrol saya, jika ini tidak jelas.
sumber
Saya menerapkan boilerplate mesin aplikasi google hari ini dan memeriksanya di github. Ini seperti yang dijelaskan oleh Nick Johnson di atas (yang dulu bekerja untuk Google).
Ikuti tautan ini gae-boilerplate
sumber
Saya pikir opsi pertama dianggap sebagai praktik terbaik. Dan jadikan folder kode sebagai paket pertama Anda. Proyek Rietveld yang dikembangkan oleh Guido van Rossum adalah model yang sangat bagus untuk dipelajari. Silakan lihat di: http://code.google.com/p/rietveld
Berkenaan dengan Django 1.0, saya sarankan Anda mulai menggunakan kode batang Django alih-alih GAE yang dibangun pada port django. Sekali lagi, lihat bagaimana ini dilakukan di Rietveld.
sumber
Saya suka webpy jadi saya telah mengadopsinya sebagai kerangka kerja template di Google App Engine.
Folder paket saya biasanya diatur seperti ini:
Berikut ini contohnya.
sumber
Saya tidak sepenuhnya mengikuti praktik terbaik terbaru, dan lain-lain dalam hal tata letak kode, tetapi ketika saya melakukan aplikasi GAE pertama saya, saya menggunakan sesuatu di sepanjang opsi kedua Anda, di mana kode dan templat berada di samping satu sama lain.
Ada dua alasan untuk ini - satu, itu membuat kode dan templat tetap dekat, dan kedua, saya memiliki tata letak struktur direktori yang meniru situs web - membuatnya (bagi saya) sedikit lebih mudah juga mengingat di mana semuanya berada.
sumber