[PYTHON] Bonnes pratiques pour Django views.py et urls.py (?)

Avant de faire une application simple avec Django

Comment puis-je en savoir plus sur les paramètres de views.py et urls.py de manière très simple? Je pensais que si je supprimais uniquement les bases avant de répéter de nombreuses erreurs, le reste serait fluide.

L'introduction de Django est un ancien article http://qiita.com/Gen6/items/1848f8b4d938807d082e

On suppose que la configuration du modèle a été terminée comme cette fois. http://qiita.com/Gen6/items/a5562c36fc5c67c89916

Je pense que l'histoire sera plus facile à comprendre si vous faites de même en vous référant aux articles précédents.

Affichons l'heure

templates/index.html


{% extends "base.html" %}
{% block body %}

    <p>{{hour}}C'est l'heure</p>

{% endblock %}

myapp/urls.py


from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^template/$', views.index, name='index'),
]

myapp/views.py


from datetime import datetime
from django.http.response import HttpResponse
from django.shortcuts import render


def index(request):
    Datetime = {
        'hour': datetime.now().hour,
    }
    return render(request, 'index.html', Datetime)

Si vous vérifiez ce qui précède sur http://127.0.0.1:8000/myapp/, l'heure doit être affichée. Si le fuseau horaire est dans le désordre, passez de "UTC "à" Asia / Tokyo "dans settings.py.

Essayez de créer un formulaire qui renvoie le contenu après avoir entré le nom

templates/index.html



{% extends "base.html" %}
{% block body %}

    <form action="" method="get">
      <label>Nom:<input type="text" size="20" name="your_name"></label>
      <input type="submit" value="Envoyer">
    </form>
    {% if your_name %}
      <p>{{ your_name }}Hey,.</p>
    {% endif %}

{% endblock %}

myapp/urls.py


from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.get_query, name='get_query'),
    url(r'^template/$', views.index, name='index'),
]

myapp/views.py


from django.http.response import HttpResponse
from django.shortcuts import render


def get_query(request):
    Message = {
        'your_name': request.GET.get('your_name'),
    }
    return render(request, 'index.html', Message)

Si vous vérifiez ce qui précède sur http://127.0.0.1:8000/myapp/, un formulaire apparaîtra, Renvoie la chaîne saisie dans le formulaire.

Comment mélanger les deux comportements

Eh bien, le sujet principal est d'ici. Comment utiliser le formulaire tout en affichant l'heure?

Un exemple qui ne fonctionne pas

templates/index.html


{% extends "base.html" %}
{% block body %}

    <p>{{hour}}C'est l'heure</p>
    <form action="" method="get">
      <label>Nom:<input type="text" size="20" name="your_name"></label>
      <input type="submit" value="Envoyer">
    </form>
    {% if your_name %}
      <p>{{ your_name }}Hey,.</p>
    {% endif %}

{% endblock %}

myapp/urls.py


from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^$', views.get_query, name='get_query'),
    url(r'^template/$', views.index, name='index'),
]

myapp/views.py


from datetime import datetime
from django.http.response import HttpResponse
from django.shortcuts import render


def index(request):
    Datetime = {
        'hour': datetime.now().hour,
    }
    return render(request, 'index.html', Datetime)

def get_query(request):
    Message = {
        'your_name': request.GET.get('your_name'),
    }
    return render(request, 'index.html', Message)

Cela ne fonctionnera pas. Où est le problème?

Exemple de travail

myapp/urls.py


from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^template/$', views.index, name='index'),
]

myapp/views.py


from datetime import datetime
from django.http.response import HttpResponse
from django.shortcuts import render


def index(request):
    Message = {
        'your_name': request.GET.get('your_name'),
        'hour': datetime.now().hour
    }
    return render(request, 'index.html', Message)

Je pense que si vous pouvez le comprendre, vous pouvez approfondir votre compréhension en essayant différents paramètres.

La création réelle de l'application se trouve dans un article séparé. http://qiita.com/Gen6/items/735245423b65698428be

Recommended Posts

Bonnes pratiques pour Django views.py et urls.py (?)
__version__ pièges et bonnes pratiques
Meilleures pratiques pour la gestion dynamique des messages LINE Flex dans Django
Meilleures pratiques pour manipuler les données avec les pandas
Prise en charge de l'internationalisation avec Django 1.9
Meilleures pratiques personnelles pour l'environnement de développement Python basé sur VS Code
[Pour les débutants] Django Commandes fréquemment utilisées et collection de références
Pratiques et algorithmes DBSCAN