Heim Backend-Entwicklung Python-Tutorial Django-Projekt: Praktischer Benutzer-Avatar-Upload und Zugriff

Django-Projekt: Praktischer Benutzer-Avatar-Upload und Zugriff

Apr 21, 2018 pm 02:49 PM
django 头像 用户

In diesem Artikel werden hauptsächlich praktische Beispiele für das Hochladen und Zugreifen auf Benutzeravatare in Django-Projekten vorgestellt. Jetzt teile ich sie mit Ihnen und gebe ihnen eine Referenz. Werfen wir gemeinsam einen Blick darauf

1 Speichern Sie die Datei lokal auf dem Server

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>
Nach dem Login kopieren

urls.py

from django.conf.urls import url
from app01 import views
urlpatterns = [
  url(r&#39;^upload&#39;,views.upload)
]
Nach dem Login kopieren

views.py

from django.shortcuts import render,HttpResponse 
def upload(request):
  if request.method == &#39;POST&#39;:
    name = request.POST.get(&#39;username&#39;)
    avatar = request.FILES.get(&#39;avatar&#39;)
    with open(avatar.name,&#39;wb&#39;) as f:
      for line in avatar:
        f.write(line)
    return HttpResponse(&#39;ok&#39;)
  return render(request,&#39;upload.html&#39;)
Nach dem Login kopieren

Zusammenfassung

Auf diese Weise haben wir ein einfaches kleines Beispiel für das Hochladen von Dateien erstellt. Hier sind einige Punkte zu beachten:
1. Die csrf_token-Überprüfung muss dem Formular hinzugefügt werden
2. Der Typwert des Eingabefelds der Datei ist Datei
3. Um die Datei in der Ansichtsfunktion abzurufen, verwenden Sie request.FILES .get()-Methode
4 . Der Name der Datei kann über obj.name abgerufen werden

2 Laden Sie die Datei in die Datenbank hoch

models.py

from django.db import models
 class User(models.Model):
  username = models.CharField(max_length=16)
  avatar = models.FileField(upload_to=&#39;avatar&#39;)
Nach dem Login kopieren

views.py

def upload(request):
  if request.method == &#39;POST&#39;:
    name = request.POST.get(&#39;username&#39;)
    avatar = request.FILES.get(&#39;avatar&#39;)
    models.User.objects.create(username=name,avatar=avatar)
    return HttpResponse(&#39;ok&#39;) 
  return render(request,&#39;upload.html&#39;)
Nach dem Login kopieren

Zusammenfassung

Die Funktion zum Hochladen von Dateien in die Datenbank wurde oben implementiert. Es sind einige Punkte zu beachten:
1. Die Das sogenannte Hochladen in die Datenbank bedeutet nicht, das Bild selbst oder den Binärcode in der Datenbank abzulegen. Tatsächlich wird die Datei lokal auf den Server hochgeladen, sodass der Benutzer dies nur wünscht Um die Datei aufzurufen, kann er über den Pfad
2 zum vom Server angegebenen Speicherort gehen. Beim Erstellen eines ORM muss das Avatar-Feld vorhanden sein. Es gibt ein Attribut upload_to='', das angibt, wo die hochgeladenen Dateien abgelegt werden sollen Datei
3. Beim Hinzufügen zur Datenbank entspricht die Zuweisung des Dateifeldattributs der Form des normalen Felds, z. B. models.User.objects create(username=name,avatar=avatar)
4 . Wenn die von zwei Benutzern hochgeladenen Dateinamen identisch sind, benennt das System die Datei automatisch um:

Zusätzlich

Funktion wurde implementiert. Wenn wir die Datei aufrufen, müssen wir anscheinend nur über die Datei selbst auf das Bild zugreifen, das im Datenbankdateipfad gespeichert wurde auf der Webseite angezeigt wird, ist dies nicht der Fall.

Wir müssen einige Dinge konfigurieren, damit Django es finden kann, andernfalls besteht es die URL-Überprüfung nicht, und der Grund, warum wir es finden können Der direkte Zugriff auf statische Dateien in static liegt daran, dass Django bereits für uns konfiguriert wurde.

Die Konfigurationsschritte sind wie folgt:

1. Konfigurieren Sie

in den Einstellungen der Site .py

MEDIA_ROOT=os.path.join(BASE_DIR,"blog","media") #blog是项目名,media是约定成俗的文件夹名

MEDIA_URL="/media/"   # 跟STATIC_URL类似,指定用户可以通过这个路径找到文件
Nach dem Login kopieren

2. Konfigurieren Sie in urls.py

from django.views.static import serve
from upload import settings        #upload是站点名
url(r&#39;^media/(?P<path>.*)$&#39;, serve, {&#39;document_root&#39;: settings.MEDIA_ROOT}),
Nach dem Login kopieren

Nach der Konfiguration , Sie können über http://127.0.0.1:8001/media/milk.png auf das Bild zugreifen

3 Verwenden Sie AJAX, um Dateien einzureichen

upload.html

<!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>
  $(&#39;#submit-btn&#39;).on(&#39;click&#39;,function () {
    formdata = new FormData();
    formdata.append(&#39;username&#39;,$(&#39;#name-input&#39;).val());
    formdata.append("avatar",$("#avatar")[0].files[0]);
    formdata.append("csrfmiddlewaretoken",$("[name=&#39;csrfmiddlewaretoken&#39;]").val()); 
 $.ajax({
 processData:false,contentType:false,url:&#39;/upload&#39;, type:&#39;post&#39;, data:formdata,success:function (arg)
 { 
if (arg.state == 1){ alert(&#39;成功!&#39;) }
else { alert(&#39;失败!&#39;) } } }) });
 </script>
 </body> 
</html>
Nach dem Login kopieren

views.py

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
from app01 import models
def upload(request):
  if request.method == &#39;POST&#39;:
    name = request.POST.get(&#39;username&#39;)
    avatar = request.FILES.get(&#39;avatar&#39;)
    try:
      models.User.objects.create(username=name,avatar=avatar)
      data = {&#39;state&#39;:1}
    except:
      data = {&#39;state&#39;:0}
    return JsonResponse(data)
  return render(request,&#39;upload.html&#39;)
Nach dem Login kopieren

Zusammenfassung

1. Beim Hochladen mit Ajax darf die Eingabeschaltfläche nicht „Senden“ verwenden.
2 Beim Hochladen mit Ajax ist der Wert des Datenparameters kein Wert mehr gewöhnlicher Wörterbuchtypwert, aber ein FormData-Objekt

  1. Objekt formdata = new FormData();

  2. Wert formdata hinzufügen ('username',$('#name-input').val());

3. Ajax muss beim Einreichen von Beiträgen eine CSRF-Überprüfung hinzufügen

  1. formdata.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());

4 Dateien hochlädt, müssen zwei Parametereinstellungen vorhanden sein:

  1. processData:false

  2. contentType:false

4 Beim Hochladen von Bilddateien gibt es eine Vorschaufunktion

<!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里的图片)点击事件
  $(&#39;#avatar-input&#39;).on(&#39;change&#39;,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>
Nach dem Login kopieren

5 Zusammenfassung

Beim Datei-Upload, egal ob es sich um eine direkte Formularübermittlung oder eine Ajax-Übermittlung handelt, besteht das grundlegende Problem darin, dem Browser mitzuteilen, dass es sich bei dem, was Sie hochladen möchten, um eine Datei und nicht um eine gewöhnliche Zeichenfolge handelt

Dies können Sie dem Browser mitteilen, indem Sie den ContentType-Parameter des Gewichts anfordern. Wir müssen ihn beim Hochladen einer normalen Zeichenfolge nicht angeben, da er einen Standardwert hat.

Wenn Sie Wenn Sie Dateien übertragen möchten, müssen Sie dies separat angeben. Um die folgenden Punkte zusammenzufassen
1. Für den Formular-Upload wird ContentType durch enctype="multipart/form-data" angegeben
2. Für den Ajax-Upload wird ContentType durch processData:false und contentType:false
angegeben 3. Beim Hochladen des Formulars werden die Dateidaten durch das Tag umschlossen. 4. Beim Hochladen des Ajax werden die Daten durch eine FormData-Instanz hinzugefügt Objekt. Übergeben Sie einfach dieses Objekt, wenn Sie es übergeben
5. Nachdem die Daten übergeben wurden, werden sie in request.FILES statt in request.POST gekapselt

Verwandte Empfehlungen:


Wie Django CSS- und JS-Dateien und statische Bilder lädt

Detaillierte Erläuterung der Verwendung von Django-Steuerelementen und der Übergabe von Parametern

Das obige ist der detaillierte Inhalt vonDjango-Projekt: Praktischer Benutzer-Avatar-Upload und Zugriff. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verwende ich das Xiaohongshu-Konto, um Benutzer zu finden? Kann ich meine Handynummer finden? Wie verwende ich das Xiaohongshu-Konto, um Benutzer zu finden? Kann ich meine Handynummer finden? Mar 22, 2024 am 08:40 AM

Mit der rasanten Entwicklung der sozialen Medien hat sich Xiaohongshu zu einer der beliebtesten sozialen Plattformen entwickelt. Benutzer können ein Xiaohongshu-Konto erstellen, um ihre persönliche Identität zu zeigen und mit anderen Benutzern zu kommunizieren und zu interagieren. Wenn Sie die Xiaohongshu-Nummer eines Benutzers finden müssen, können Sie diese einfachen Schritte befolgen. 1. Wie verwende ich das Xiaohongshu-Konto, um Benutzer zu finden? 1. Öffnen Sie die Xiaohongshu-App, klicken Sie auf die Schaltfläche „Entdecken“ in der unteren rechten Ecke und wählen Sie dann die Option „Notizen“. 2. Suchen Sie in der Notizenliste nach der Notiz, die von dem Benutzer gepostet wurde, den Sie suchen möchten. Klicken Sie hier, um die Seite mit den Notizdetails aufzurufen. 3. Klicken Sie auf der Seite mit den Notizdetails auf die Schaltfläche „Folgen“ unter dem Avatar des Benutzers, um zur persönlichen Homepage des Benutzers zu gelangen. 4. Klicken Sie in der oberen rechten Ecke der persönlichen Homepage des Benutzers auf die Schaltfläche mit den drei Punkten und wählen Sie „Persönliche Informationen“.

Melden Sie sich als Superuser bei Ubuntu an Melden Sie sich als Superuser bei Ubuntu an Mar 20, 2024 am 10:55 AM

In Ubuntu-Systemen ist der Root-Benutzer normalerweise deaktiviert. Um den Root-Benutzer zu aktivieren, können Sie mit dem Befehl passwd ein Passwort festlegen und sich dann mit dem Befehl su- als Root anmelden. Der Root-Benutzer ist ein Benutzer mit uneingeschränkten Systemadministratorrechten. Er verfügt über Berechtigungen zum Zugriff auf und zum Ändern von Dateien, zur Benutzerverwaltung, zum Installieren und Entfernen von Software sowie zum Ändern der Systemkonfiguration. Es gibt offensichtliche Unterschiede zwischen dem Root-Benutzer und normalen Benutzern. Der Root-Benutzer verfügt über die höchste Autorität und umfassendere Kontrollrechte im System. Der Root-Benutzer kann wichtige Systembefehle ausführen und Systemdateien bearbeiten, was normale Benutzer nicht können. In dieser Anleitung werde ich den Ubuntu-Root-Benutzer untersuchen, wie man sich als Root anmeldet und wie er sich von einem normalen Benutzer unterscheidet. Beachten

Was ist Sudo und warum ist es wichtig? Was ist Sudo und warum ist es wichtig? Feb 21, 2024 pm 07:01 PM

sudo (Superuser-Ausführung) ist ein Schlüsselbefehl in Linux- und Unix-Systemen, der es normalen Benutzern ermöglicht, bestimmte Befehle mit Root-Rechten auszuführen. Die Funktion von sudo spiegelt sich hauptsächlich in den folgenden Aspekten wider: Bereitstellung von Berechtigungskontrolle: sudo erreicht eine strikte Kontrolle über Systemressourcen und sensible Vorgänge, indem es Benutzern erlaubt, vorübergehend Superuser-Berechtigungen zu erhalten. Normale Benutzer können über sudo bei Bedarf nur vorübergehende Berechtigungen erhalten und müssen sich nicht ständig als Superuser anmelden. Verbesserte Sicherheit: Durch die Verwendung von sudo können Sie die Verwendung des Root-Kontos bei Routinevorgängen vermeiden. Die Verwendung des Root-Kontos für alle Vorgänge kann zu unerwarteten Systemschäden führen, da für jeden fehlerhaften oder nachlässigen Vorgang die vollen Berechtigungen gewährt werden. Und

Django vs. Flask: Eine vergleichende Analyse von Python-Web-Frameworks Django vs. Flask: Eine vergleichende Analyse von Python-Web-Frameworks Jan 19, 2024 am 08:36 AM

Django und Flask sind beide führend bei Python-Web-Frameworks und haben beide ihre eigenen Vorteile und anwendbaren Szenarien. In diesem Artikel wird eine vergleichende Analyse dieser beiden Frameworks durchgeführt und spezifische Codebeispiele bereitgestellt. Entwicklungseinführung Django ist ein Web-Framework mit vollem Funktionsumfang, dessen Hauptzweck darin besteht, schnell komplexe Webanwendungen zu entwickeln. Django bietet viele integrierte Funktionen wie ORM (Object Relational Mapping), Formulare, Authentifizierung, Verwaltungs-Backend usw. Diese Funktionen ermöglichen es Django, große Mengen zu verarbeiten

Vor- und Nachteile des Django Framework: Alles, was Sie wissen müssen Vor- und Nachteile des Django Framework: Alles, was Sie wissen müssen Jan 19, 2024 am 09:09 AM

Django ist ein vollständiges Entwicklungsframework, das alle Aspekte des Webentwicklungslebenszyklus abdeckt. Derzeit ist dieses Framework eines der beliebtesten Web-Frameworks weltweit. Wenn Sie vorhaben, mit Django Ihre eigenen Webanwendungen zu erstellen, müssen Sie die Vor- und Nachteile des Django-Frameworks verstehen. Hier finden Sie alles, was Sie wissen müssen, einschließlich spezifischer Codebeispiele. Vorteile von Django: 1. Schnelle Entwicklung – Djang kann Webanwendungen schnell entwickeln. Es bietet eine umfangreiche Bibliothek und interne

Analyse des Speichermechanismus für Benutzerkennwörter im Linux-System Analyse des Speichermechanismus für Benutzerkennwörter im Linux-System Mar 20, 2024 pm 04:27 PM

Analyse des Speichermechanismus für Benutzerkennwörter im Linux-System Im Linux-System ist die Speicherung des Benutzerkennworts einer der sehr wichtigen Sicherheitsmechanismen. In diesem Artikel wird der Speichermechanismus von Benutzerkennwörtern in Linux-Systemen analysiert, einschließlich der verschlüsselten Speicherung von Kennwörtern, des Kennwortüberprüfungsprozesses und der sicheren Verwaltung von Benutzerkennwörtern. Gleichzeitig wird anhand konkreter Codebeispiele der tatsächliche Ablauf der Passwortspeicherung demonstriert. 1. Verschlüsselte Speicherung von Passwörtern In Linux-Systemen werden Benutzerpasswörter nicht im Klartext im System gespeichert, sondern verschlüsselt und gespeichert. L

So ändern Sie den Kontonamen und den Avatar in Win10 – Detaillierte Schritt-für-Schritt-Anleitung So ändern Sie den Kontonamen und den Avatar in Win10 – Detaillierte Schritt-für-Schritt-Anleitung Jan 14, 2024 pm 01:45 PM

Nach der Registrierung eines Win10-Kontos haben viele Freunde das Gefühl, dass ihre Standard-Avatare nicht sehr gut aussehen. Aus diesem Grund möchten sie ihre Avatare ändern. Wenn Sie es wissen möchten, können Sie dies tun Kommen Sie und schauen Sie es sich an. So ändern Sie den Win10-Kontonamen und den Avatar: 1. Klicken Sie zunächst auf die untere linke Ecke, um zu starten. 2. Klicken Sie dann oben im Popup-Menü auf den Avatar. 3. Klicken Sie nach der Eingabe auf „Kontoeinstellungen ändern“. 4. Klicken Sie dann unter dem Avatar auf „Durchsuchen“. 5. Suchen Sie das Foto, das Sie als Avatar verwenden möchten, und wählen Sie es aus. 6. Schließlich ist die Änderung erfolgreich abgeschlossen.

So aktualisieren Sie die Django-Version: Schritte und Überlegungen So aktualisieren Sie die Django-Version: Schritte und Überlegungen Jan 19, 2024 am 10:16 AM

So aktualisieren Sie die Django-Version: Schritte und Überlegungen, spezifische Codebeispiele erforderlich. Einführung: Django ist ein leistungsstarkes Python-Web-Framework, das kontinuierlich aktualisiert und aktualisiert wird, um eine bessere Leistung und mehr Funktionen bereitzustellen. Für Entwickler, die ältere Versionen von Django verwenden, kann die Aktualisierung von Django jedoch einige Herausforderungen mit sich bringen. In diesem Artikel werden die Schritte und Vorsichtsmaßnahmen zum Aktualisieren der Django-Version vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Sichern Sie die Projektdateien, bevor Sie Djan aktualisieren

See all articles