


Projet Django téléchargement et accès pratiques à l'avatar de l'utilisateur
Cet article présente principalement les exemples pratiques de téléchargement et d'accès aux avatars des utilisateurs dans les projets Django. Maintenant, je les partage avec vous et leur donne une référence. Jetons un coup d'oeil ensemble
1 Enregistrez le fichier localement sur le serveur
upload.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} <p>用户名:<input type="text" name="username"></p> <p>头像<input type="file" name="avatar"></p> <input type="submit" value="提交"> </form> </body> </html>
urls.py
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^upload',views.upload) ]
views.py
from django.shortcuts import render,HttpResponse def upload(request): if request.method == 'POST': name = request.POST.get('username') avatar = request.FILES.get('avatar') with open(avatar.name,'wb') as f: for line in avatar: f.write(line) return HttpResponse('ok') return render(request,'upload.html')
Résumé
De cette façon, nous avons réalisé un petit exemple basique de téléchargement de fichiers. Il y a quelques points à noter ici :
1. La vérification csrf_token doit être ajoutée au formulaire
2. La valeur de type de la zone de saisie du fichier est file
3. Pour obtenir le fichier dans la fonction d'affichage, utilisez la requête.FILES Méthode .get()
4. Le nom du fichier peut être obtenu via obj.name
2 Téléchargez le fichier dans la base de données
models.py
from django.db import models class User(models.Model): username = models.CharField(max_length=16) avatar = models.FileField(upload_to='avatar')
views.py
def upload(request): if request.method == 'POST': name = request.POST.get('username') avatar = request.FILES.get('avatar') models.User.objects.create(username=name,avatar=avatar) return HttpResponse('ok') return render(request,'upload.html')
Résumé
La fonction de téléchargement de fichiers dans la base de données a été implémentée ci-dessus. Il y a quelques points à noter :
1. Le. ce qu'on appelle le téléchargement vers la base de données ne signifie pas placer l'image elle-même ou le code binaire dans la base de données. En fait, le fichier est téléchargé sur le serveur localement. La base de données stocke uniquement le chemin d'un fichier, de sorte que lorsque l'utilisateur le souhaite. pour appeler le fichier, il peut se rendre à l'emplacement spécifié par le serveur via le chemin.
2. Lors de la création d'un ORM, le champ avatar doit être Il y a un attribut upload_to='', qui précise où mettre le fichier téléchargé. file
3. Lors de l'ajout à la base de données, l'attribution de l'attribut du champ de fichier est de la même forme que le champ ordinaire, tel que : models.User.objects create(username=name,avatar=avatar)
4. . Si les noms de fichiers téléchargés par deux utilisateurs sont identiques, le système renommera automatiquement le fichier. L'effet est le suivant :
Supplémentaire<. La fonction 🎜>
MEDIA_ROOT=os.path.join(BASE_DIR,"blog","media") #blog是项目名,media是约定成俗的文件夹名 MEDIA_URL="/media/" # 跟STATIC_URL类似,指定用户可以通过这个路径找到文件
from django.views.static import serve from upload import settings #upload是站点名 url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
3 Utilisez AJAX pour soumettre des fichiers
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <form> {% csrf_token %} <p>用户名:<input id="name-input" type="text"></p> <p>头像<input id="avatar-input" type="file"></p> <input id="submit-btn" type="button" value="提交"> </form> <script src="/static/js/jquery-3.2.1.min.js"></script> <script> $('#submit-btn').on('click',function () { formdata = new FormData(); formdata.append('username',$('#name-input').val()); formdata.append("avatar",$("#avatar")[0].files[0]); formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val()); $.ajax({ processData:false,contentType:false,url:'/upload', type:'post', data:formdata,success:function (arg) { if (arg.state == 1){ alert('成功!') } else { alert('失败!') } } }) }); </script> </body> </html>
from django.shortcuts import render,HttpResponse from django.http import JsonResponse from app01 import models def upload(request): if request.method == 'POST': name = request.POST.get('username') avatar = request.FILES.get('avatar') try: models.User.objects.create(username=name,avatar=avatar) data = {'state':1} except: data = {'state':0} return JsonResponse(data) return render(request,'upload.html')
2 Lorsque Ajax télécharge, la valeur du paramètre data n'est plus un dictionnaire ordinaire. ' tapez la valeur, mais un objet FormData
- Créez un objet formdata = new FormData();
- Ajoutez-y une valeur formdata. username',$('#name-input').val());
<🎜. >
- formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());
- 4. , il doit y avoir deux réglages de paramètres
- processData:false
- contentType:false
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <form> <!----用一个label标签将上传文件输入框跟图片绑定一起, 点击图片的时候就相当于点击了上传文件的按钮----> <label><img id="avatar-img" src="/static/img/default.png" width="80px" height="80px"> <p>头像<input id="avatar-input" hidden type="file"></p> </label> <input id="submit-btn" type="button" value="提交"> </form> <script src="/static/js/jquery-3.2.1.min.js"></script> <script> // 上传文件按钮(label里的图片)点击事件 $('#avatar-input').on('change',function () { // 获取用户最后一次选择的图片 var choose_file=$(this)[0].files[0]; // 创建一个新的FileReader对象,用来读取文件信息 var reader=new FileReader(); // 读取用户上传的图片的路径 reader.readAsDataURL(choose_file); // 读取完毕之后,将图片的src属性修改成用户上传的图片的本地路径 reader.onload=function () { $("#avatar-img").attr("src",reader.result) } }); </script>
Pour le téléchargement de fichiers, qu'il s'agisse d'une soumission directe par formulaire ou d'une soumission Ajax, le problème fondamental est d'indiquer au navigateur que ce que vous souhaitez télécharger est un fichier et non une chaîne ordinaire
Comment le savoir au navigateur est de demander le paramètre ContentType du poids Nous n'avons pas besoin de le spécifier lors du téléchargement d'une chaîne normale, car il a une valeur par défaut,
Si vous le souhaitez. transférer des fichiers, vous devez le spécifier séparément. Pour résumer les points suivants
2. Pour le téléchargement ajax, ContentType est spécifié via processData:false et contentType:false
3. Lorsque le formulaire est téléchargé, les données du fichier sont "encapsulées" via la balise
4. Lorsque l'ajax est téléchargé, les données sont ajoutées via un objet d'instance FormData. Transmettez simplement cet objet lors de sa transmission
5. Une fois les données transmises, elles sont encapsulées dans request.FILES au lieu de request.POST
Recommandations associées :
Comment Django charge les fichiers CSS et js et les images statiques
Explication détaillée de l'utilisation des contrôles Django et de la transmission des paramètres
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Avec le développement rapide des médias sociaux, Xiaohongshu est devenue l'une des plateformes sociales les plus populaires. Les utilisateurs peuvent créer un compte Xiaohongshu pour montrer leur identité personnelle et communiquer et interagir avec d'autres utilisateurs. Si vous avez besoin de trouver le numéro Xiaohongshu d’un utilisateur, vous pouvez suivre ces étapes simples. 1. Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? 1. Ouvrez l'application Xiaohongshu, cliquez sur le bouton « Découvrir » dans le coin inférieur droit, puis sélectionnez l'option « Notes ». 2. Dans la liste des notes, recherchez la note publiée par l'utilisateur que vous souhaitez rechercher. Cliquez pour accéder à la page de détails de la note. 3. Sur la page de détails de la note, cliquez sur le bouton « Suivre » sous l'avatar de l'utilisateur pour accéder à la page d'accueil personnelle de l'utilisateur. 4. Dans le coin supérieur droit de la page d'accueil personnelle de l'utilisateur, cliquez sur le bouton à trois points et sélectionnez « Informations personnelles »

Dans les systèmes Ubuntu, l'utilisateur root est généralement désactivé. Pour activer l'utilisateur root, vous pouvez utiliser la commande passwd pour définir un mot de passe, puis utiliser la commande su- pour vous connecter en tant que root. L'utilisateur root est un utilisateur disposant de droits d'administration système illimités. Il dispose des autorisations nécessaires pour accéder et modifier les fichiers, la gestion des utilisateurs, l'installation et la suppression de logiciels et les modifications de la configuration du système. Il existe des différences évidentes entre l'utilisateur root et les utilisateurs ordinaires. L'utilisateur root possède la plus haute autorité et des droits de contrôle plus étendus sur le système. L'utilisateur root peut exécuter des commandes système importantes et modifier des fichiers système, ce que les utilisateurs ordinaires ne peuvent pas faire. Dans ce guide, j'explorerai l'utilisateur root Ubuntu, comment se connecter en tant que root et en quoi il diffère d'un utilisateur normal. Avis

sudo (exécution du superutilisateur) est une commande clé dans les systèmes Linux et Unix qui permet aux utilisateurs ordinaires d'exécuter des commandes spécifiques avec les privilèges root. La fonction de sudo se reflète principalement dans les aspects suivants : Fournir un contrôle des autorisations : sudo réalise un contrôle strict sur les ressources système et les opérations sensibles en autorisant les utilisateurs à obtenir temporairement les autorisations de superutilisateur. Les utilisateurs ordinaires ne peuvent obtenir des privilèges temporaires via sudo qu'en cas de besoin et n'ont pas besoin de se connecter en permanence en tant que superutilisateur. Sécurité améliorée : en utilisant sudo, vous pouvez éviter d'utiliser le compte root lors des opérations de routine. L'utilisation du compte root pour toutes les opérations peut entraîner des dommages inattendus au système, car toute opération incorrecte ou imprudente bénéficiera de toutes les autorisations. et

Django et Flask sont tous deux leaders dans les frameworks Web Python, et ils ont tous deux leurs propres avantages et scénarios applicables. Cet article procédera à une analyse comparative de ces deux frameworks et fournira des exemples de code spécifiques. Introduction au développement Django est un framework Web complet, son objectif principal est de développer rapidement des applications Web complexes. Django fournit de nombreuses fonctions intégrées, telles que ORM (Object Relational Mapping), formulaires, authentification, backend de gestion, etc. Ces fonctionnalités permettent à Django de gérer de grandes

Django est un framework de développement complet qui couvre tous les aspects du cycle de vie du développement Web. Actuellement, ce framework est l’un des frameworks Web les plus populaires au monde. Si vous envisagez d'utiliser Django pour créer vos propres applications Web, vous devez alors comprendre les avantages et les inconvénients du framework Django. Voici tout ce que vous devez savoir, y compris des exemples de code spécifiques. Avantages de Django : 1. Développement rapide : Djang peut développer rapidement des applications Web. Il fournit une bibliothèque riche et interne

Analyse du mécanisme de stockage du mot de passe utilisateur dans le système Linux Dans le système Linux, le stockage du mot de passe utilisateur est l'un des mécanismes de sécurité très importants. Cet article analysera le mécanisme de stockage des mots de passe des utilisateurs dans les systèmes Linux, y compris le stockage crypté des mots de passe, le processus de vérification des mots de passe et la manière de gérer en toute sécurité les mots de passe des utilisateurs. Dans le même temps, des exemples de code spécifiques seront utilisés pour démontrer le processus opérationnel réel de stockage des mots de passe. 1. Stockage crypté des mots de passe Dans les systèmes Linux, les mots de passe des utilisateurs ne sont pas stockés dans le système en texte brut, mais sont cryptés et stockés. L

Après avoir enregistré un compte Win10, de nombreux amis estiment que leurs avatars par défaut ne sont pas très beaux. Pour cette raison, ils souhaitent modifier leurs avatars. Voici un tutoriel sur la façon de modifier leurs avatars. Si vous voulez savoir, vous pouvez. venez jeter un oeil. Comment changer le nom et l'avatar du compte win10 : 1. Cliquez d'abord sur le coin inférieur gauche pour commencer. 2. Cliquez ensuite sur l'avatar ci-dessus dans le menu contextuel. 3. Après avoir entré, cliquez sur « Modifier les paramètres du compte ». 4. Cliquez ensuite sur « Parcourir » sous l'avatar. 5. Recherchez la photo que vous souhaitez utiliser comme avatar et sélectionnez-la. 6. Enfin, la modification est terminée avec succès.

Comment mettre à niveau la version de Django : étapes et considérations, exemples de code spécifiques requis Introduction : Django est un puissant framework Web Python qui est continuellement mis à jour et mis à niveau pour offrir de meilleures performances et plus de fonctionnalités. Cependant, pour les développeurs utilisant des versions plus anciennes de Django, la mise à niveau de Django peut rencontrer certains défis. Cet article présentera les étapes et les précautions à suivre pour mettre à niveau la version de Django et fournira des exemples de code spécifiques. 1. Sauvegardez les fichiers du projet avant de mettre à niveau Djan
