Heim Backend-Entwicklung PHP-Tutorial Analysieren Sie die Verwendung von Cookies in Django

Analysieren Sie die Verwendung von Cookies in Django

Aug 18, 2017 am 11:07 AM
cookie django ie

Cookie ist eine vom Browser auf dem Client hinterlassene Aufzeichnung. Diese Aufzeichnung kann im Speicher oder auf der Festplatte gespeichert werden. In Django ist das Lesen und Setzen von Cookies sehr einfach. Als nächstes werde ich Ihnen in diesem Artikel die Verwendung von Cookies in Django vorstellen.

Cookie ist ein vom Browser auf dem Client hinterlassener Datensatz Speicher oder auf der Festplatte. Da HTTP-Anfragen zustandslos sind, kann der Server oder Client den Status in der Sitzung aufrechterhalten, indem er Cookie-Datensätze liest. Ein häufiges Anwendungsszenario ist beispielsweise der Anmeldestatus. In Django ist das Lesen und Setzen von Cookies sehr einfach. Das Format des Cookies selbst ähnelt einem Wörterbuch, es kann also über den Schlüssel oder get der Anfrage abgerufen werden. Anschließend wird seine Einstellung über set_cookie des Antwortobjekts festgelegt Ablaufzeit auf die aktuelle Zeit.

Cookie abrufen:


request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
  参数:
    default: 默认值
    salt: 加密盐
    max_age: 后台控制过期时间
Nach dem Login kopieren

Cookie setzen:


rep = HttpResponse(...) 或 rep = render(request, ...)
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐',...)
  参数:
    key,       键
    value='',     值
    max_age=None,   超时时间
    expires=None,   超时时间(IE requires expires, so set it if hasn't been already.)
    path='/',     Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
    domain=None,   Cookie生效的域名
    secure=False,   https传输
    httponly=False  只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
Nach dem Login kopieren

Beispiel 1: Richten Sie eine Anmeldeschnittstelle ein, eine Sprungschnittstelle nach erfolgreicher Indexanmeldung. Wenn Sie nicht angemeldet sind, wird automatisch zur Anmeldeschnittstelle gesprungen

Ansichten. py


def index(reqeust):
  # 获取当前已经登录的用户
  v = reqeust.COOKIES.get('username111')
  if not v:
    return redirect('/login/')
  return render(reqeust,'index.html',{'current_user': v})
Nach dem Login kopieren

Beachten Sie, dass es zwei Möglichkeiten gibt, das Cookie-Timeout festzulegen: Eine besteht darin, max_age direkt anzugeben (Timeout nach N Sekunden), die andere darin, Ablaufdatum anzugeben gefolgt von einem bestimmten Zeitobjekt

httponly kann verhindern, dass JavaScript diesen Wert erhält, aber es ist eigentlich nutzlos. Chrome oder Packet Capture können problemlos alle Cookies abrufen

index.html


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>欢迎登录:{{ current_user }}</h1>
</body>
</html>
Nach dem Login kopieren

login.html


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form action="/login/" method="POST">
    <input type="text" name="username" placeholder="用户名" />
    <input type="password" name="pwd" placeholder="密码" />
    <input type="submit" />
  </form>
</body>
</html>
Nach dem Login kopieren

Beispiel 2:

Im echten Leben dieses Verifizierungscookie Funktion wird normalerweise verwendet. Schreiben Sie sie als Dekorator, sodass Sie sie direkt für andere Funktionen aufrufen können

Änderungsbeispiel 1


def auth(func):
  def inner(reqeust,*args,**kwargs):
    v = reqeust.COOKIES.get(&#39;username111&#39;)
    if not v:
      return redirect(&#39;/login/&#39;)
    return func(reqeust, *args,**kwargs)
  return inner
@auth
def index(reqeust):
  # 获取当前已经登录的用户
  v = reqeust.COOKIES.get(&#39;username111&#39;)
  return render(reqeust,&#39;index.html&#39;,{&#39;current_user&#39;: v})
Nach dem Login kopieren

Beispiel 3: Wir Wissen Sie, dass wir fbv oder cbv verwenden können, um Funktionen weiterzuleiten. Beispiel 2 verwendet die fbv-Methode, die auch mit cbv implementiert werden kann. Wenn Sie nur eine Methode dekorieren möchten, fügen Sie einfach @method_decorator direkt vor der Methode hinzu Dekorieren Sie die Oberseite der gesamten Klasse

views.py


Beispiel 4 Wir können Cookies auch über JavaScript oder JQuery setzen, z. B. Basierend auf Dem vorherigen Paging-Code fügen wir eine Funktion hinzu, um die Anzahl der angezeigten Zeilen anzupassen.
@method_decorator(auth,name=&#39;dispatch&#39;)
class Order(views.View):
  # @method_decorator(auth)
  # def dispatch(self, request, *args, **kwargs):
  #   return super(Order,self).dispatch(request, *args, **kwargs)
  # @method_decorator(auth)
  def get(self,reqeust):
    v = reqeust.COOKIES.get(&#39;username111&#39;)
    return render(reqeust,&#39;index.html&#39;,{&#39;current_user&#39;: v})
  def post(self,reqeust):
    v = reqeust.COOKIES.get(&#39;username111&#39;)
    return render(reqeust,&#39;index.html&#39;,{&#39;current_user&#39;: v})
urls.py
 url(r&#39;^order/&#39;, views.Order.as_view()),
Nach dem Login kopieren

user_list.html Hier ist ein JQuery-Plugin, das das Lesen und Setzen von Cookies erleichtert. Darüber hinaus beschränken wir auch den Umfang der Cookie-Nutzung, nicht standardmäßig alle Bereiche, sondern nur auf /user_list Im Pfad


views.py ruft die Anzahl der Zeilen pro Seite vom Frontend ab und übergibt sie bei der Instanziierung an unsere Paging-Klasse
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  <style>
    .go{
      width:20px;
       border: solid 1px;
      color: #66512c;
      display: inline-block;
      padding: 5px;
    }
    .pagination .page{
      border: solid 1px;
      color: #66512c;
      display: inline-block;
      padding: 5px;
      background-color: papayawhip;
      margin: 5px;
    }
    .pagination .page.active{
      background-color: brown;
      color: white;
    }
  </style>
</head>
<body>
  <ul>
    {% for item in li %}
      {% include &#39;li.html&#39; %}
    {% endfor %}
  </ul>
  <p>
    <select id="ps" onchange="changePageSize(this)">
      <option value="10">10</option>
      <option value="30">30</option>
      <option value="50">50</option>
      <option value="100">100</option>
    </select>
  </p>
  <p class="pagination">
    {{ page_str }}
  </p>
  <script src="/static/jquery-1.12.4.js"></script>
  <script src="/static/jquery.cookie.js"></script>
  <script>
    $(function(){
        var v = $.cookie(&#39;per_page_count&#39;, {&#39;path&#39;: "/user_list/`"});
        console.log(v)
        $(&#39;#ps&#39;).val(v);
    });
    function changePageSize(ths){
      var v = $(ths).val();
      console.log(v);
      $.cookie(&#39;per_page_count&#39;,v, {&#39;path&#39;: "/user_list/"});     
      location.reload();
    }
  </script>
</body>
</html>
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonAnalysieren Sie die Verwendung von Cookies in Django. 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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen 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)

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

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

Was soll ich tun, wenn Win11 den IE11-Browser nicht verwenden kann? (win11 kann den IE-Browser nicht verwenden) Was soll ich tun, wenn Win11 den IE11-Browser nicht verwenden kann? (win11 kann den IE-Browser nicht verwenden) Feb 10, 2024 am 10:30 AM

Immer mehr Benutzer beginnen mit der Aktualisierung des Win11-Systems. Da jeder Benutzer unterschiedliche Nutzungsgewohnheiten hat, verwenden viele Benutzer immer noch den IE11-Browser. Was soll ich also tun, wenn das Win11-System den IE-Browser nicht verwenden kann? Unterstützt Windows11 immer noch ie11? Werfen wir einen Blick auf die Lösung. Lösung des Problems, dass Win11 den ie11-Browser nicht verwenden kann 1. Klicken Sie zunächst mit der rechten Maustaste auf das Startmenü und wählen Sie „Eingabeaufforderung (Administrator)“, um es zu öffnen. 2. Geben Sie nach dem Öffnen direkt „Netshwinsockreset“ ein und drücken Sie zur Bestätigung die Eingabetaste. 3. Geben Sie nach der Bestätigung „netshadvfirewallreset&rdqu“ ein

Detaillierte Erklärung, wo Browser-Cookies gespeichert werden Detaillierte Erklärung, wo Browser-Cookies gespeichert werden Jan 19, 2024 am 09:15 AM

Mit der Popularität des Internets ist die Verwendung von Browsern zum Surfen im Internet zu einer Lebensweise geworden. Bei der täglichen Verwendung von Browsern stoßen wir häufig auf Situationen, in denen wir Kontokennwörter eingeben müssen, z. B. beim Online-Shopping, bei sozialen Netzwerken, bei E-Mails usw. Diese Informationen müssen vom Browser aufgezeichnet werden, damit sie bei Ihrem nächsten Besuch nicht erneut eingegeben werden müssen. Was sind Cookies? Bei einem Cookie handelt es sich um eine kleine Datendatei, die vom Server an den Browser des Benutzers gesendet und lokal gespeichert wird. Sie enthält das Benutzerverhalten einiger Websites.

Ist Django Front-End oder Back-End? Hör zu! Ist Django Front-End oder Back-End? Hör zu! Jan 19, 2024 am 08:37 AM

Django ist ein in Python geschriebenes Webanwendungs-Framework, das Wert auf schnelle Entwicklung und saubere Methoden legt. Obwohl Django ein Web-Framework ist, müssen Sie zur Beantwortung der Frage, ob Django ein Front-End oder ein Back-End ist, ein tiefes Verständnis der Konzepte von Front-End und Back-End haben. Das Front-End bezieht sich auf die Schnittstelle, mit der Benutzer direkt interagieren, und das Back-End bezieht sich auf serverseitige Programme. Sie interagieren mit Daten über das HTTP-Protokoll. Wenn das Front-End und das Back-End getrennt sind, können die Front-End- und Back-End-Programme unabhängig voneinander entwickelt werden, um Geschäftslogik bzw. interaktive Effekte sowie den Datenaustausch zu implementieren.

So verwenden Sie das Django-Framework zum Erstellen eines Projekts in PyCharm So verwenden Sie das Django-Framework zum Erstellen eines Projekts in PyCharm Feb 19, 2024 am 08:56 AM

Tipps zum Erstellen von Projekten mit dem Django-Framework in PyCharm, die spezifische Codebeispiele erfordern. Django ist ein leistungsstarkes Python-Web-Framework, das eine Reihe von Tools und Funktionen für die schnelle Entwicklung von Webanwendungen bereitstellt. PyCharm ist eine in Python entwickelte integrierte Entwicklungsumgebung (IDE), die eine Reihe praktischer Funktionen und Tools zur Steigerung der Entwicklungseffizienz bietet. Durch die Kombination von Django und PyCharm können Projekte schneller und bequemer erstellt werden

So brechen Sie den automatischen Sprung zu Edge ab, wenn Sie den IE in Win10_Solution öffnen, um zum automatischen Sprung der IE-Browserseite zu gelangen So brechen Sie den automatischen Sprung zu Edge ab, wenn Sie den IE in Win10_Solution öffnen, um zum automatischen Sprung der IE-Browserseite zu gelangen Mar 20, 2024 pm 09:21 PM

In letzter Zeit haben viele Win10-Benutzer festgestellt, dass ihr IE-Browser bei der Verwendung von Computerbrowsern immer automatisch zum Edge-Browser springt. Wie kann man also den automatischen Sprung zum Edge beim Öffnen des IE in Win10 deaktivieren? Lassen Sie diese Website den Benutzern sorgfältig vorstellen, wie sie beim Öffnen des IE in Win10 automatisch zum Rand springen und schließen. 1. Wir melden uns beim Edge-Browser an, klicken auf ... in der oberen rechten Ecke und suchen nach der Dropdown-Einstellungsoption. 2. Nachdem wir die Einstellungen eingegeben haben, klicken Sie in der linken Spalte auf Standardbrowser. 3. Abschließend aktivieren wir in der Kompatibilität das Kontrollkästchen, um ein erneutes Laden der Website im IE-Modus zu verhindern, und starten den IE-Browser neu.

See all articles