Modelli di progetto applicazione Web di Python
Python in Visual Studio supporta lo sviluppo di progetti Web nei framework Bottle, Flask e Django, usando modelli di progetto e un'utilità di avvio del debug che può essere configurata in modo da gestire diversi framework. Questi modelli includono un file requirements.txt per dichiarare le dipendenze necessarie. Quando si crea un progetto da uno di questi modelli, Visual Studio richiede di installare i pacchetti dipendenti, come descritto in Requisiti di installazione più avanti in questo articolo.
È anche possibile usare il modello generico Progetto Web per altri framework, come ad esempio Pyramid. In questo caso, con il modello non vengono installati framework. Si installano invece i pacchetti necessari nell'ambiente in uso per il progetto. Per altre informazioni, vedere finestra Ambienti Python - Scheda Pacchetto.
Opzioni del modello di progetto
Per creare un progetto da un modello, selezionare File>nuovo>progetto dal menu della barra degli strumenti. Nella finestra di dialogo Crea un nuovo progetto è possibile filtrare l'elenco dei modelli per visualizzare le opzioni disponibili per i progetti Web Python. Immettere i termini chiave nella casella Di ricerca oppure usare i menu a discesa filtro per selezionare Python come linguaggio e Web come tipo di progetto.
Dopo aver selezionato un modello, specificare un nome per il progetto e la soluzione e impostare le opzioni per la directory della soluzione e il repository Git.
Il modello progetto Web generico fornisce un progetto di Visual Studio vuoto senza codice e non presuppone che sia un progetto Python. Gli altri modelli sono basati sui framework Web Bottle, Flask o Django e raggruppati in tre categorie, come descritto nelle sezioni seguenti. Le app create con uno di questi modelli contengono codice sufficiente per eseguire l'app in locale ed eseguirne il debug. Ogni modello fornisce anche l'oggetto app WSGI necessario (python.org) da usare con i server Web di produzione.
Gruppo vuoto
Tutti i modelli progetto Web framework> vuoto <creano un progetto con codice boilerplate più o meno minimo e le dipendenze necessarie dichiarate in un file di requirements.txt.
Modello | Descrizione |
---|---|
Progetto Web Bottle vuoto | Genera un'app minima nel file app.py con una home page per la / posizione e una /hello/<name> pagina che restituisce il <name> valore usando un modello di pagina inline breve. |
Progetto Web Django vuoto | Genera un progetto Django con la struttura fondamentale del sito Django ma nessuna app Django. Per altre informazioni, vedere i modelli Django e il passaggio 1 dell'esercitazione su Django. |
Progetto Web Flask vuoto | Genera un'app minima con una singola pagina "Hello World!" per la / posizione. Questa app è simile al risultato che si ottiene seguendo i passaggi dettagliati nella Guida introduttiva: Creare per la prima volta un'app Web Python con Visual Studio. Per altre informazioni, vedere Learn Flask Step 1.For more information, see Learn Flask Step 1. |
Gruppo Web
Tutti i <modelli di progetto Web Framework> creano un'app Web iniziale con una progettazione identica indipendentemente dal framework scelto. L'app include pagine Home, Informazioni e Contatti, insieme a una barra dei menu di spostamento e a una progettazione reattiva che usa Bootstrap. Ogni app è configurata in modo appropriato per i file statici (CSS, JavaScript e i tipi di carattere) e usa un meccanismo per il modello di pagina appropriato per il framework.
Modello | Descrizione |
---|---|
Progetto Web Bottle | Genera un'app i cui file statici sono contenuti nella cartella statica e gestiti tramite codice nel file app.py . Il routing per le singole pagine è contenuto nel file routes.py . La cartella views contiene i modelli di pagina. |
Progetto Web Django | Genera un progetto Django e un'app Django con tre pagine, il supporto dell'autenticazione e un database SQLite (ma nessun modello dati). Per altre informazioni, vedere i modelli Django e il passaggio 4 dell'esercitazione su Django. |
Progetto Web Flask | Genera un'app i cui file statici sono contenuti nella cartella static. Il codice nel file views.py gestisce il routing con i modelli di pagina che usano il motore Jinja contenuto nella cartella templates. Il file runserver.py fornisce il codice di avvio. |
Requisiti di installazione
Quando si crea un progetto da un modello specifico del framework, Visual Studio offre una finestra di dialogo che consente di installare i pacchetti necessari usando pip. È anche consigliabile usare un ambiente virtuale per i progetti Web per assicurarsi che le dipendenze corrette vengano incluse quando si pubblica il sito Web:
Se si usa il controllo del codice sorgente, in genere si omette la cartella dell'ambiente virtuale perché tale ambiente può essere ricreato usando solo il file requirements.txt . Il modo migliore per escludere la cartella consiste nel selezionare prima di tutto l'opzione I will install them me stesso, quindi disabilitare il commit automatico prima di creare l'ambiente virtuale. Per altre informazioni, vedere Esaminare i controlli Git in Learn Django Tutorial (Esercitazione su Learn Django) e Learn Flask Tutorial (Esercitazione su Learn Flask).
Quando si esegue la distribuzione in Microsoft app Azure Service, selezionare una versione di Python come estensione del sito e installare manualmente i pacchetti. Inoltre, poiché il servizio app di Azure non installa automaticamente i pacchetti da un file requirements.txt quando viene distribuito da Visual Studio, attenersi ai dettagli di configurazione indicati in aka.ms/PythonOnAppService.
Opzioni di debug
Quando si apre un progetto Web per il debug, Visual Studio avvia un server Web locale su una porta casuale e apre il browser predefinito a tale indirizzo e porta. Per specificare altre opzioni, fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni, selezionare Proprietà. Nella pagina Proprietà selezionare la scheda Debug.
Esistono tre gruppi di opzioni di configurazione comuni per il debug del progetto. Il gruppo Esegui include le proprietà seguenti:
- Le opzioni Percorsi di ricerca, Argomenti script, Percorso interprete e Argomenti dell'interprete sono le stesse per il normale debug.
- L'URL di avvio specifica l'URL che si apre nel browser. Il percorso predefinito è
localhost
. - Il numero di porta identifica la porta da usare, se non è specificato nessuno nell'URL (Visual Studio ne seleziona uno automaticamente per impostazione predefinita). Questa impostazione consente di eseguire l'override del valore predefinito della
SERVER_PORT
variabile di ambiente, che viene usata dai modelli per configurare la porta su cui è in ascolto il server di debug locale. - L'elenco Ambiente definisce le variabili da impostare nel processo generato. Il formato è un elenco di
<NAME>=<VALUE>
coppie separate da nuova riga.
Le proprietà nei gruppi Esegui comando server e Comando server di debug determinano la modalità di avvio del server Web. Con molti framework è richiesto l'uso di uno script esterno al progetto corrente, di conseguenza è possibile configurare qui lo script e passare il nome del modulo di avvio come parametro.
- Il comando può essere uno script Python (*.py file), un nome del modulo (come in,
python.exe -m module_name
) o una singola riga di codice (come in ,python.exe -c "code"
). Il valore nella casella a discesa indica il tipo desiderato. - L'elenco di argomenti viene passato nella riga di comando dopo il comando .
- Anche in questo caso, l'elenco Ambiente definisce le variabili da impostare dopo tutte le proprietà che potrebbero modificare l'ambiente, ad esempio il numero di porta e i percorsi di ricerca. Questi valori di variabile possono sovrascrivere altri valori di proprietà.
Qualsiasi proprietà di progetto o variabile di ambiente può essere specificata con la sintassi di MSBuild, ad esempio $(StartupFile) --port $(SERVER_PORT)
. $(StartupFile)
è il percorso relativo del file di avvio, mentre {StartupModule}
è il nome importabile del file di avvio. $(SERVER_HOST)
e $(SERVER_PORT)
sono variabili di ambiente normale che vengono impostate tramite le proprietà URL di avvio e Numero di porta automaticamente oppure tramite la proprietà Ambiente.
Nota
I valori in Esegui comando server vengono usati con il comando Debug>Start Server o i tasti di scelta rapida CTRL+F5. I valori nel gruppo Debug Server Command vengono usati con il comando Debug Avvia debug>server o F5.
Esempio di configurazione di Bottle
Il modello Progetto Web Bottle include codice boilerplate che esegue la configurazione necessaria. Un'app bottle importata potrebbe non includere questo codice, tuttavia, nel qual caso le impostazioni seguenti avviano l'app usando il modulo installato bottle
:
Gruppo Comando esegui server:
- Comando:
bottle
(modulo) - Argomenti:
--bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app
- Comando:
Gruppo Comando debug server:
- Comando:
bottle
(modulo) - Argomenti
--debug --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app
- Comando:
L'opzione --reload
non è consigliata quando si usa Visual Studio per il debug.
Esempio di configurazione di Pyramid
Le app Pyramid sono attualmente create al meglio usando lo pcreate
strumento da riga di comando. Dopo aver creato l'app, può essere importata usando il modello di codice Python esistente. Al termine dell'importazione, selezionare la personalizzazione del progetto Web generico per configurare le opzioni. Queste impostazioni presuppongono che Pyramid sia installato in un ambiente virtuale nella ..\env
posizione.
Gruppo di esecuzione :
- Numero porta: 6543 (o qualsiasi elemento configurato nei file di .ini )
Gruppo Comando esegui server:
- Comando:
..\env\scripts\pserve-script.py
(script) - Argomenti:
Production.ini
- Comando:
Gruppo Comando debug server:
- Comando:
..\env\scripts\pserve-script.py
(script) - Argomenti:
Development.ini
- Comando:
Suggerimento
È probabilmente necessario configurare la proprietà Directory di lavoro del progetto perché le app Pyramid si trovano in genere una cartella sotto la radice del progetto.
Altre configurazioni
Se si vogliono condividere impostazioni personalizzate per un altro framework oppure richiederne altre, aprire una segnalazione in GitHub.