web-dev-qa-db-fra.com

Django passe la variable dans le modèle

Salut merci d'avoir aidé, je suis pauvre en codage.

Au point: je fais un projet Django qui transmet la base de données du formulaire de données au front-end; mais pour l'instant je ne peux même pas passer quoi que ce soit des vues de Django dans les modèles, je soupçonne que je passe les mauvais types de variables; veuillez commenter votre pensée.

Voici mon code sur views.py:

from Django.shortcuts import render

def index (requset):
    return render(requset,'myapp/index.html') # link to be able open frountend

def testdex(requset):
    text = "hello world"
    context ={'mytext' : text }
    return render(requset,'myapp/inculdes.html', context)

donc ma variable sera passée en inculdes où s'étendre à la page d'index

Voici mes codes dans inculdes.html:

{% exntends "myapp/index.html" %}

{% block includes %}
{{ mytext }}
{% endblock includes %}

ce mon code sur index.html:

<body>
{% block includes %} {% endblock includes %}    
</body>

Merci encore de m'avoir donné le temps de m'aider et de l'apprécier si je pouvais m'écrire du code car essayez de résoudre ce problème pendant toute la semaine

9
Rookies DJ

Vous pouvez essayer quelque chose comme ça

views.py

from Django.template.response import TemplateResponse

def testdex(requset, template_name="myapp/inculdes.html"):
    args = {}
    text = "hello world"
    args['mytext'] = text
    return TemplateResponse(request, template_name, args)

inculdes.html

{% extends "myapp/index.html" %}
{% block includes %}
{{ mytext }}
{% endblock includes %}

Et assurez-vous d'avoir défini le chemin des modèles dans settings.py

11
Ajay Kumar

Lorsque vous faites {% block content %}{% endblock content %} vous dites Django que vous voulez pouvoir écraser cette section. Veuillez noter que le contenu Word peut être n'importe quoi pour refléter ce que vous voulez écraser.

Lorsque vous faites {{ variable }} vous dites Django que vous voulez passer un contexte. Dans cet exemple, la variable que je veux passer s'appelle Titre comme clé et Portfolio comme valeur. Le contexte est un dictionnaire que vous passez views.py comme ceci:

def portfolio_home(request):
    return render(request, 'portfolio/work.html', {'title': 'Portfolio'})

Disons que je veux passer un contexte (ou une variable) dans mon modèle de base. Dans cet exemple, je veux passer le titre dans la balise title de la section head de mon modèle de base.

Dans le fichier html pour base.html, vous devez avoir quelque chose comme ceci:

<!DOCTYPE html>
<html lang="en">

{% load staticfiles %}

    <head>
        <title>{{ title }}</title>
        ...........
    </head>
</html>

Dans l'urls.py de mon projet et des autres applications auxquelles je veux passer un titre, je devrais créer la vue comme ceci:

def portfolio_home(request):
    return render(request, 'portfolio/work.html', {'title': 'Portfolio'})
2
azmirfakkri

J'ai découvert pourquoi Django ne peut pas passer de variables au HTML parce que;

Je n'ai pas eu l'URL de mes applications activé la fonction/le modèle dans les vues

Je me sens tellement gêné, pour de telles erreurs simples.

Tout ce que je dois faire est d'ajouter ce code dans l'url de mes applications

urlpatterns = [
path('', views.timedex, name='timedex'), #need add this 
path('', views.index, name='index'),
]
2
Rookies DJ

Ajoutez {{block.super}} avant que {% endblock inclut%}

1
M.G