Django-yksityinen-näkemyksiä on Django app, joka tarjoaa yhteisen malli sivustot on, kun pari sivua suojataan ja vaativat kirjautumista käsiksi. & Nbsp;login_required sisustaja usein tulee kätevä näissä tilanteissa. Mutta toinen malli, joka on melko yleinen on kun suurin osa sivusto on suojattu, jossa muutamia poikkeuksia lukuun ottamatta sivuja, jotka jäävät julkisia (esim etusivulle, rekisteröinti sivu, jne.). Tällöin se voi olla varsin ikävä koristella kaikki näkemyksiälogin_required, ja se voi olla helppo unohtaa koristella joitakin niistä.
Django-yksityisen näkymät suojaa jokainen näkymä ja sitten voit nimenomaan kertoa mikä näkemyksiä pitäisi olla julkisia. Tämä tekee asiat sekä helpompaa ja vähemmän virhealtista.
Asennus
Asenna Django-yksityisen näkymät PyPI.
Pip asentaa Django-private-katselua
Lisää privateviews middleware asetukset:
MIDDLEWARE_CLASSES = (
& Nbsp; ...
& Nbsp; privateviews.middleware.LoginRequiredMiddleware
)
julistaminen yleisön näkemyksiä
Tässä vaiheessa kaikki näkemykset paitsi settings.LOGIN_URL vaatii sisäänkirjautumisen. Joten meidän täytyy nyt määritellä muutamia näkemyksiä, että pitäisi olla julkisia. On olemassa kolme eri tapaa käytettävissänne: käyttämällä erityistä sisustaja, jossa luetellaan julkisia näkymiä, tai listalle julkisen URL polkuja.
Käyttämällä Decorator
Käyttämällälogin_not_required voit nimenomaan pakottaa jotta julkisia. Esimerkiksi:
alkaen privateviews.decorators tuonti login_not_required
login_not_required
def etusivulle (pyynnöstä):
& Nbsp; ...
Tällöin etusivulle näkymä näy oikein, vaikka Käytät ole kirjautunut sisään.
Listing julkisia näkymiä
Jos sinulla ei rsquo; t on suora pääsy muokata näkymä & rsquo; s koodi (esim se & rsquo; s kolmannen osapuolen sovellus), voit silti voi pakottaa, että jotta julkisia lisäämällä se PUBLIC_VIEWS asetus asetukset tiedostoon. Here & rsquo; s Esimerkiksi jos Käytät uudelleen käyttämällä django.contrib.auth järjestelmää ja Django-rekisteröintihakemuksessa:
PUBLIC_VIEWS = [
& Nbsp; "django.contrib.auth.views.login",
& Nbsp; "django.contrib.auth.views.password_reset_done",
& Nbsp; "django.contrib.auth.views.password_reset",
& Nbsp; "django.contrib.auth.views.password_reset_confirm",
& Nbsp; "django.contrib.auth.views.password_reset_complete",
& Nbsp; "registration.views.register",
& Nbsp; "registration.views.activate",
]
Listing URL julkisen polkuja
Kolmas ja viimeinen tapa on suoraan määrittää URL polut (kuten säännöllisiä lausekkeita) ja sivut, jotka haluat olla julkisia. Tämä voi olla hyödyllistä, jos esimerkiksi sivun suorittaja yleinen näkemys. On myös hyödyllistä, jos olet palvelevat mediatiedostot staattisesti kautta Django (suositellaan vain kehitystä tilassa). Sillä, että sinun täytyy lisätä PUBLIC_PATHS -asetus asetukset tiedostoon. Here & rsquo; s esimerkki:
PUBLIC_PATHS = [
& Nbsp; '^% s'% MEDIA_URL,
& Nbsp; '^ / tileille / Rekisteröidy / täydellinen / $', # Käyttää "direct_to_template geneerinen näkymä
]
Making 404 näkemyksiä yksityinen
Tässä vaiheessa ei-kirjautuneet käyttäjät voivat edelleen nähdä 404 vastauksia, jos he käyvät url, joka ei karttaa katsella. Se ei ole ihanteellinen, koska se ei pitäisi olla mahdollista määrittää sivuston rakenteen ilman sisäänkirjautumista.
Jotta 404 näkymät yksityinen kaikille paitsi kirjautuneet käyttäjät lisätä seuraavaa viimeisen rivin oman huipputason urlconf:
urlpatterns = kuviot ('',
& Nbsp; ...
& Nbsp; url (r '^', 'privateviews.views.private_404')
)
Vaatimukset :
- Python
- Django
Kommentteja ei löytynyt