Si c'est pour le back-end, alors dans le admin.py de ton model, ce sera quelque chose comme:
class IdentiteAdmin(admin.ModelAdmin):
...
search_fields = ['nom', 'prenom', 'adresse']
...
Je souhaite par le moyen d'un formulaire téléverser un fichier sur le serveur (sans traitement pour le moment, ni contrainte de format de fichier).
J'ai suivi la documentation officiel sur l'envoie de fichier : https://docs.djangoproject.com/fr/2.2/t … e-uploads/
Voici mon code aujourd'hui dans l'application "arch", bien que j'ai fait de nombreux tests que je n'ai suivi de manière rigoureuse malheureusement.
dans le fichier forms.py
from django import forms
class ModelFormWithFileField(forms.Form):
title = forms.CharField(label='Titre', max_length=50)
file = forms.FileField()
dans le fichier views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import ModelFormWithFileField
def upload_file(request):
if request.method == 'POST':
form = ModelFormWithFileField(request.POST, request.FILES)
if form.is_valid():
# file is saved
form.save()
return HttpResponseRedirect('/arch/files/')
else:
form = ModelFormWithFileField()
return render(request, 'arch/upload.html', {'form': form})
dans le fichier urls.py
from django.urls import path
from . import views
*urlpatterns = [
path('upload/', views.upload_file, name='fichier'),
]
dans le fichier templates/arch/upload.html
<h1>Upload</h1>
<h2>Formulaire d'envoie de fichier</h2>
<form enctype="multipart/form-data" action="{% url 'fichier' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="envoyer" />
</form>
Message d'erreur:
AttributeError at /arch/upload/
'ModelFormWithFileField' object has no attribute 'save'
Request Method: POST
Request URL: http://192.168.1.102:8000/arch/upload/
Django Version: 2.2
Exception Type: AttributeError
Exception Value: 'ModelFormWithFileField' object has no attribute 'save'
Exception Location: /home/user/venv/dev/stockage/arch/views.py in upload_file, line 81
Python Executable: /home/user/venv/bin/python
Python Version: 3.7.2
Python Path:
['/home/user/venv/dev/stockage',
'/home/user/venv/lib/python37.zip',
'/home/user/venv/lib/python3.7',
'/home/user/venv/lib/python3.7/lib-dynload',
'/usr/lib/python3.7',
'/home/user/venv/lib/python3.7/site-packages']
Server time: mar, 28 Mai 2019 08:14:10 +0200
Pourriez-vous m'aider à finaliser cette fonctionnalité ?
Je vous remercie,
Bonne journée
]]>J'ai une base de données avec des valeurs aux format AA-XXXX et je cherche a faire des statistiques en fonction s des années.
Je souhaiterais que l'affichage se fasse sur la forme: AAAA il y a eux ant de valeur.
Pour cela , j'ai commencé à écrire le code suivant mais je n'arrive pas à faire un affichage sur le template:
def statistique(request):
# Permet de calculer l'annee
year = datetime.now().year
print "year"
print year
year_digit = str(year)[-2:]
print "year_digit"
print year_digit
start_date = int(year_digit)
#comptage nombre de Ref total
for i in range(15, int(year_digit)+1):
nb_ref = Ref.objects.all().filter(ref__startswith=i).count()
#nb_ref = Ref.objects.all().filter(ref__startswith=i).annotate(the_count_vs=Count('ref'))
#nb_ref = Ref.objects.values('ref').filter(ref__startswith=i).annotate(Count('ref'))
print 'nb_ref'
print nb_ref
#Comptage nom nombre de ref par ans
#return render(request, 'stat_total.html', {'nb_ref': nb_ref})
return render_to_response('stat_total.html', {'nb_ref': nb_ref})
Merci de votre aide
]]>Cordialement
]]>Je me suis mit très récemment à Django, depuis hier enfaite, j'étais déjà conquis par la documentation du framework, alors je me suis dit que j'allais me lancer, j'ai suivis le tutoriel de la documentation.
Surprise, lors de ma première migration (qui est censé initiliser les premiers models du framework) j'ai eu plusieurs très mauvaises surprises, tout d'abord, lors du premier migrate (que j'y apporte un App comme argument ou pas), mon fichier db.sqlite3 se créer et surprise : il est mal encodé. On me propose donc de changer d'encodage, mais rien de change, je choisis donc d'en faire un fichier SQL à la place de Plain Text, aucun changement.
Je n'ai pas trouvé de "SQLite3 file" dans les associations de mon IDE (PyCharms), je ne sais pas si c'est normal ou si je dois installer à part SQLite3, malgré le fait qu'il est censé être compris dans le framework, enfin bref, mon IDE me précise que "No data source is configured to run this SQL" et me propose d'en choisir un, je trouve donc Sqlite, et le sélectionne, mais cela ne change rien..
Voici les erreurs de mon terminal :
λ python manage.py migrate intra
Traceback (most recent call last):
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
return self.cursor.execute(sql)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\sqlite3\base.py", line 301, in execute
return Database.Cursor.execute(self, query)
sqlite3.DatabaseError: database disk image is malformed
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "D:\Install_Dev\Python\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
utility.execute()
File "D:\Install_Dev\Python\lib\site-packages\django\core\management\__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "D:\Install_Dev\Python\lib\site-packages\django\core\management\base.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "D:\Install_Dev\Python\lib\site-packages\django\core\management\base.py", line 335, in execute
output = self.handle(*args, **options)
File "D:\Install_Dev\Python\lib\site-packages\django\core\management\commands\migrate.py", line 79, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)
File "D:\Install_Dev\Python\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "D:\Install_Dev\Python\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
self.build_graph()
File "D:\Install_Dev\Python\lib\site-packages\django\db\migrations\loader.py", line 206, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "D:\Install_Dev\Python\lib\site-packages\django\db\migrations\recorder.py", line 61, in applied_migrations
if self.has_table():
File "D:\Install_Dev\Python\lib\site-packages\django\db\migrations\recorder.py", line 44, in has_table
return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\base\introspection.py", line 56, in table_names
return get_names(cursor)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\base\introspection.py", line 51, in get_names
return sorted(ti.name for ti in self.get_table_list(cursor)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\sqlite3\introspection.py", line 67, in get_table_list
ORDER BY name""")
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\utils.py", line 100, in execute
return super().execute(sql, params)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "D:\Install_Dev\Python\lib\site-packages\django\db\utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
return self.cursor.execute(sql)
File "D:\Install_Dev\Python\lib\site-packages\django\db\backends\sqlite3\base.py", line 301, in execute
return Database.Cursor.execute(self, query)
django.db.utils.DatabaseError: database disk image is malformed
Elles s'affichent aussi si j'ai le malheur de retenter un migrate.
Contre question :
J'ai déjà tenté de réinstaller python ainsi que django.
J'ai tenter de changer d'IDE (dans le cas sou l'encodage était fautif)
J'ai même tenter de l'installer sous deux machines virtuelles différentes (une xubuntu et une archlinux) mêmes résultats.
Je tourne actuellement sous Windows 10 avec la dernière version de Python.
Je ne sais quoi d'autre ajouter mis à part : merci d'avance pour votre aide et bon code !
]]>c'est un grand bonheur d'avoir trouvé ce forum mais c'est par desespoir que pose une question qui a été déjà traité plusieurs fois, j'ai essayer les solutions proposée et cela ne fonctionne pas
voici le view.py
....
def connected(request):
user_email = request.POST['user_email']
user_mdp = request.POST['user_pw']
liste_utilisateur = utilisateurs.objects.filter(email=user_email, mdp=user_mdp)
if len(liste_utilisateur)>0:
print('Connected !!!')
return redirect('choix')
else:
print('Not Connected !!!!')
return render(request,'collecte/login.html',{})
def choix(request):
print("je suis ici...")
return render(request,'collecte/choix.html',{})
la partie urls.py
urlpatterns = [
path('', views.index, name='index'),
path('login/', views.login, name='login'),
path('connected', views.connected, name='connected'),
path('choix/', views.choix, name='choix'),
#path('choix',RedirectView.as_view(url='choix/', permanent=False), name='choix'),
path('saisie/', views.saisie, name='saisie'),
]
sur la console , les traces arrivent bien à "je suis ici", mais l'url n'as pas été modifiée et donc je reste sur la même page
est ce que quelqu'un pourrais me dire ce que je n'ai pas compris
merci a tous
et bonne soirées
(je continue à chercher)
Christophe
(dj1) E:\Formations\django\pro1>django-admin shell
Traceback (most recent call last):
File "c:\program files\python36\Lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\program files\python36\Lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\ANATOL~1\Envs\dj1\Scripts\django-admin.exe\__main__.py", line 9, in <module>
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
utility.execute()
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\core\management\__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\core\management\base.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\core\management\base.py", line 327, in execute
saved_locale = translation.get_language()
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\utils\translation\__init__.py", line 187, in get_language
return _trans.get_language()
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\utils\translation\__init__.py", line 55, in __getattr__
if settings.USE_I18N:
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\conf\__init__.py", line 56, in __getattr__
self._setup(name)
File "c:\users\anatol~1\envs\dj1\lib\site-packages\django\conf\__init__.py", line 41, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
fichier model :
from django.db import models
from django import forms
# Create your models here.
class Inscription(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
def __str__(self):
return self.username
fichier views :
from .models import Inscription
from django import forms
class InscriptionForm(forms.ModelForm):
class Meta:
model = Inscription
fields = '__all__'
def inscription(request):
form=InscriptionForm(request.POST or None)
return render(request, 'echec/inscription.html')
et fichier html :
<form action="{% url "inscription" %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
J'ai testé en supprimant les balises liées au tableau. Mais cela ne change rien.
Un collège m'a conseillé de créer une liste vide entre les deux boucles for dans ma vue
assurance =[]
Et de mettre un .append dans la suite, du code mais je ne sais pas trop où.
]]>Pour la 2 je verrais bien en temps et en heure. Merci_
]]>Merci beaucoup
]]>