δομή του έργου για τη μηχανή της Google App

ψήφοι
117

Ξεκίνησα μια εφαρμογή στο Google App Engine με το δικαίωμα, όταν βγήκε, για να παίξει με την τεχνολογία και την εργασία σε ένα κατοικίδιο ζώο έργο που είχα σκεφτεί για πολύ καιρό, αλλά ποτέ δεν πάρει γύρω από την εκκίνηση. Το αποτέλεσμα είναι BowlSK . Ωστόσο, δεδομένου ότι έχει αυξηθεί και έχουν χαρακτηριστικά έχουν προστεθεί, έχει πάρει πολύ δύσκολο να κρατήσει τα πράγματα οργανωμένα - κυρίως λόγω του γεγονότος ότι πρόκειται για το πρώτο έργο python μου, και εγώ δεν ξέρω τίποτα γι 'αυτό μέχρι που άρχισε να εργάζεται.

Τι έχω:

  • Κύρια Επίπεδο περιέχει:
    • όλα τα .py αρχεία (δεν ξέρουν πώς να κάνουν τα πακέτα εργασίας)
    • όλα τα .html πρότυπα για τις κύριες σελίδες επίπεδο
  • υποκατάλογοι:
    • ξεχωριστούς φακέλους για CSS, εικόνες, js, κ.λπ.
    • φακέλους που κατέχουν .html πρότυπα για τις διευθύνσεις URL subdirecty τύπου

Παράδειγμα:
http://www.bowlsk.com/ χάρτες στην αρχική σελίδα (default πακέτο), το πρότυπο στο «index.html»
http://www.bowlsk.com/games/view-series.html?series=7130 χάρτες για να ViewSeriesPage (και πάλι, προεπιλογή πακέτο), το πρότυπο σε παιχνίδια / view-series.html

Είναι δυσάρεστο. Πώς μπορώ να αναδιαρθρώσει; Είχα 2 ιδέες:

  • Κύρια Φάκελος που περιέχει: appdef, ευρετήρια, main.py;

    • Υποφάκελο για τον κωδικό. Μήπως αυτό πρέπει να είναι το πρώτο μου πακέτο;
    • Υποφάκελο για πρότυπα. ιεραρχία φακέλου θα ταιριάζει με το πακέτο ιεραρχία
    • Ατομική υποφακέλους για CSS, εικόνες, js, κ.λπ.
  • Κύρια Φάκελος που περιέχει appdef, ευρετήρια, main.py;

    • Υποφάκελο για πρότυπα κωδικό +. Με αυτό τον τρόπο έχω την τάξη χειριστή δίπλα στο πρότυπο, διότι σε αυτό το στάδιο, είμαι προσθέτοντας πολλά χαρακτηριστικά, έτσι ώστε τροποποιήσεις σε μία μέση τροποποιήσεις στο άλλο. Και πάλι, μπορώ να έχω αυτό το όνομα φακέλου είναι το πρώτο όνομα του πακέτου για τα μαθήματά μου; Θα ήθελα το φάκελο για να «src», αλλά δεν θέλω τάξεις μου να είναι «src.WhateverPage»

Είναι μια βέλτιστη πρακτική εκεί; Με Django 1,0 στον ορίζοντα, είναι κάτι που μπορώ να κάνω τώρα για να βελτιώσει την ικανότητά μου να ενσωματωθούν με το πότε γίνεται η επίσημη μηχανή προτύπων GAE εκεί; Θα ήθελα απλώς να ξεκινήσει την προσπάθεια αυτά τα πράγματα, και να δει που φαίνεται καλύτερα, αλλά η στήριξη refactoring pyDev δεν φαίνεται να χειριστεί το πακέτο κινείται πολύ καλά, γι 'αυτό κατά πάσα πιθανότητα θα είναι μια μη τετριμμένη καθήκον να πάρετε όλα αυτά να λειτουργούν ξανά.

Δημοσιεύθηκε 07/09/2008 στις 15:08
πηγή χρήστη
Σε άλλες γλώσσες...                            


6 απαντήσεις

ψήφοι
1

Δεν είμαι απόλυτα ενημερωμένοι για τις τελευταίες βέλτιστες πρακτικές, κ.λπ., όταν πρόκειται για διάταξη κώδικα, αλλά όταν έκανα την πρώτη αίτησή μου GAE, χρησιμοποίησα κάτι μαζί δεύτερη επιλογή σας, όπου ο κώδικας και τα πρότυπα είναι δίπλα ο ένας τον άλλο.

Υπήρξε δύο λόγοι γι 'αυτό - ένα, κράτησε τον κωδικό και το πρότυπο γύρω από το ξενοδοχείο, και δεύτερον, είχα τη διάταξη δομή καταλόγου μιμείται εκείνη του δικτυακού τόπου - καθιστώντας (για μένα) είναι λίγο πιο εύκολο πάρα πολύ να θυμάστε, όπου τα πάντα ήταν.

Απαντήθηκε 07/09/2008 στις 15:25
πηγή χρήστη

ψήφοι
6

Νομίζω ότι η πρώτη επιλογή θεωρείται η καλύτερη πρακτική. Και κάνει ο κώδικας φάκελο πρώτο πακέτο σας. Το έργο Rietveld που αναπτύχθηκε από τον Guido van Rossum είναι ένα πολύ καλό μοντέλο για να μάθουν από. Ρίξτε μια ματιά σε αυτό: http://code.google.com/p/rietveld

Όσον αφορά Django 1.0, σας προτείνω να αρχίσετε να χρησιμοποιείτε τον κωδικό κορμό Django αντί του GAE ενσωματωμένη θύρα Django. Και πάλι, ρίξτε μια ματιά στο πώς γίνεται στην Rietveld.

Απαντήθηκε 15/09/2008 στις 23:11
πηγή χρήστη

ψήφοι
102

Κατ 'αρχάς, θα ήθελα να σας προτείνω να ρίξετε μια ματιά στο « Ταχεία ανάπτυξη με την Python, Django, και το Google App Engine »

GVR περιγράφει ένα γενικό / τυπική διάταξη έργο στη σελίδα 10 του παρουσίαση διαφανειών .

Εδώ θα δημοσιεύσετε μια ελαφρώς τροποποιημένη εκδοχή της διάταξης / τη δομή από αυτή τη σελίδα. Έχω λίγο πολύ ακολουθούν αυτό το μοτίβο τον εαυτό μου. Αναφέρατε επίσης να είχε πρόβλημα με τα πακέτα. Απλά βεβαιωθείτε ότι καθένα από τα επιμέρους φακέλους σας έχει ένα αρχείο __init__.py. Είναι εντάξει, αν αδειάσει της.

στερεότυπο αρχεία

  • Αυτά τα ελάχιστα διαφέρουν μεταξύ των έργων
  • app.yaml: απευθείας όλα τα μη-στατική αιτήσεων main.py
  • main.py: η προετοιμασία του app και να το στείλετε όλες τις αιτήσεις

Έργο lay-out

  • στατική / *: στατικά αρχεία? εξυπηρετείται άμεσα από Μηχανή App
  • . MyApp / * py: app-ειδικό κωδικό python
    • views.py, models.py, tests.py, __init__.py, και πολλά άλλα
  • . Templates / * html: πρότυπα (. Ή MyApp / templates / * html)

Εδώ είναι μερικά παραδείγματα κώδικα που μπορούν να βοηθήσουν, καθώς:

main.py

import wsgiref.handlers

from google.appengine.ext import webapp
from myapp.views import *

application = webapp.WSGIApplication([
  ('/', IndexHandler),
  ('/foo', FooHandler)
], debug=True)

def main():
  wsgiref.handlers.CGIHandler().run(application)

MyApp / views.py

import os
import datetime
import logging
import time

from google.appengine.api import urlfetch
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext import webapp
from models import *

class IndexHandler(webapp.RequestHandler):
  def get(self):
    date = "foo"
    # Do some processing        
    template_values = {'data': data }
    path = os.path.join(os.path.dirname(__file__) + '/../templates/', 'main.html')
    self.response.out.write(template.render(path, template_values))

class FooHandler(webapp.RequestHandler):
  def get(self):
    #logging.debug("start of handler")

MyApp / models.py

from google.appengine.ext import db

class SampleModel(db.Model):

Νομίζω ότι αυτή η διάταξη λειτουργεί μεγάλο για τα νέα και σχετικά μικρού και μεσαίου μεγέθους έργα. Για τα μεγάλα έργα θα ήθελα να προτείνω σπάζοντας τις απόψεις και τα μοντέλα για να έχουν τη δική τους υπο-φακέλους με κάτι σαν:

Έργο lay-out

  • στατική /: στατικά αρχεία? εξυπηρετείται άμεσα από Μηχανή App
    • js / *. js
    • images / * gif |. png | jpg
    • CSS / *. css
  • / MyApp: δομή app
    • μοντέλα / *. py
    • θέα / *. py
    • δοκιμών / *. py
    • . Templates / * html: πρότυπα
Απαντήθηκε 16/09/2008 στις 09:10
πηγή χρήστη

ψήφοι
15

συνήθη διάταξη μου μοιάζει κάπως έτσι:

  • app.yaml
  • index.yaml
  • request.py - περιέχει τη βασική εφαρμογή WSGI
  • lib
    • __init__.py - κοινή λειτουργικότητα, συμπεριλαμβανομένης μιας κατηγορίας διαχειριστή αιτήσεων βάσης
  • ελεγκτές - περιέχει όλα τα χειρίζονται. request.yaml εισάγει αυτά.
  • πρότυπα
    • όλα τα πρότυπα Django, που χρησιμοποιούνται από τους ελεγκτές
  • μοντέλο
    • όλες οι κατηγορίες μοντέλο αποθήκευσης δεδομένων
  • στατικός
    • στατικά αρχεία (CSS, εικόνες, κλπ). Αντιστοιχίζονται με / στατική από app.yaml

Μπορώ να παρέχουν παραδείγματα του τι app.yaml μου, request.py, lib / init .py, και οι ελεγκτές δείγμα μοιάζουν, αν αυτό δεν είναι σαφές.

Απαντήθηκε 30/09/2008 στις 17:30
πηγή χρήστη

ψήφοι
2

Μου αρέσει webpy έτσι έχω υιοθετήσει ως πλαίσιο υφής στο Google App Engine.
Οι φάκελοι πακέτο μου συνήθως οργανώνονται ως εξής:

app.yaml
application.py
index.yaml
/app
   /config
   /controllers
   /db
   /lib
   /models
   /static
        /docs
        /images
        /javascripts
        /stylesheets
   test/
   utility/
   views/

Εδώ είναι ένα παράδειγμα.

Απαντήθηκε 23/06/2010 στις 21:30
πηγή χρήστη

ψήφοι
10

Θα εφαρμοστεί ένα google εφαρμογή στερεότυπο του κινητήρα σήμερα και ελέγχεται το στο GitHub. Αυτό είναι σύμφωνα με τις κατευθύνσεις που περιγράφονται από τον Nick Johnson παραπάνω (που χρησιμοποιείται για να εργαστεί για το Google).

Ακολουθήστε αυτό το σύνδεσμο GAE-στερεότυπο

Απαντήθηκε 21/09/2012 στις 18:07
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more