Django-protocolify είναι μια ετικέτα πρότυπο για Django που επιτρέπει το πρωτόκολλο / σύστημα που χρησιμοποιείται σε συνδέσμους μέσα σε ένα μπλοκ του κώδικα προτύπου που πρέπει να αλλάξει.
Μια χρήση υπόθεσης για αυτό είναι όταν ένα τμήμα του Web site σας χρησιμοποιεί το πρωτόκολλο HTTPS (π.χ. μια σελίδα πληρωμής) και θέλετε ο χρήστης να επιστρέψετε στη χρήση HTTP αν φύγετε από τη σελίδα. Συνήθως θα χρησιμοποιείτε το {% url%} ετικέτα πρότυπο για την δημιουργία διευθύνσεων URL, ωστόσο αυτό θα οδηγήσει σε διευθύνσεις URL, όπως:
/ Προϊόντα /
απο το να:
http://example.com/products/
Αυτό σημαίνει ότι όταν ένας χρήστης μπαίνει σε μια σελίδα HTTPS, θα πρέπει να κολλήσει με το πρωτόκολλο HTTPS, εκτός αν το χέρι να τροποποιήσει τη διεύθυνση URL στη γραμμή διευθύνσεων του browser τους.
Αυτό είναι όπου Django-protocolify λάμπει.
Χρήση
{% Protocolify [παλιό] σε <νέα>%}
Παράδειγμα (υποθέτοντας ότι το αίτημα ήταν να http://example.com/blah/):
{% Protocolify φορτίο%}
{% Protocolify σε "https"%}
{% Endprotocolify%}
καθιστά για:
Αυτή τη στιγμή υλοποιείται χρησιμοποιώντας ένα ζευγάρι των απλοϊκή κανονικές εκφράσεις και urlparse.urljoin () (Σημείωση: παλιά προεπιλογή [ένα-ΖΑ-Z] +):
# Π.χ. href = "http://google.com"
re.sub (r '(SRC | href) = "% s: //« παλιά%, r' 1 = "% s: //"% νέων, ...)
# Π.χ. href = "../ προϊόντα"
re.findall (r "" "(SRC | href) = (" | ") ([az] [α-z0-9 + -.] *:?!.;) (*) 2" "")
Όταν μια σχετική διαδρομή αντικαθίσταται (π.χ. ../products) που είναι συνδεδεμένο με το request.path. Για να λειτουργήσει αυτό, το πλαίσιο πρότυπο πρέπει να περιέχει το HttpRequest σε μια μεταβλητή αιτήματος. Αυτό μπορεί να επιτευχθεί με τη χρήση ενός RequestContext και προσθέτοντας "django.core.context_processors.request" στη ρύθμιση TEMPLATE_CONTEXT_PROCESSORS.
Τομέα ambiguitity εισάγεται όταν μια σχετική διαδρομή (π.χ. / προϊόντα /) είναι protocolified (επειδή πρέπει να προσδιορίζεται ο τομέας). Οι εικασίες Τομέα εκτελούνται με την ακόλουθη σειρά:
1. request.META [«HTTP_HOST"] - όταν το πλαίσιο περιέχει αίτημα
2. Site.objects.get_current (). Τομέα
installation
1. Λήψη και εγκατάσταση: pip εγκατάσταση Django-protocolify
2. Προσθέστε "protocolify" για τη ρύθμιση INSTALLED_APPS στο πρόγραμμά σας
Απαιτήσεις :.
- Python
- Django
Τα σχόλια δεν βρέθηκε