2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tykkää + Seuraa + Kerää = Opittu
Siitä puhuttiin edellisessä artikkelissa Django
toimiaMySQL
Menetelmässä kerrotaan, miten malli luodaan ja kuinka tietokantaa lisätään, poistetaan, muokataan ja haetaan. Mutta sinun on kirjoitettava koodi aina, kun muutat tietoja, mikä on hieman hankalaa.
Onko olemassa yksinkertaisempaa tapaa?
Jotkut, jotkut,Django
Itse asiassa sen mukana tulee taustaohjelma, joka on graafinen käyttöliittymä ja jolla voit helposti käyttää erilaisia tietosisältöjä.
Puhutaan seuraavaksi tämän sisäänrakennetun taustaohjelman käyttämisestä.
Itse asiassa luomassa Django
Projektin aikana olemme jo konfiguroineet meille taustalla olevan reititysosoitteen.
Jos noudatat edellistä artikkeliani vaihe vaiheelta, taustareititys voidaan poistaa. Sillä ei ole väliä, keksi vain.
Avaa projekti urls.py
tiedosto, löytyiurlpatterns
Tätä muuttujaa käytetään taustareitityksen täyttämiseen.
``` python
osoitteesta django.urls tuontipolku osoitteesta blog.views tuonti blogIndex
urlpatterns = [ # Muut reitit jätetään pois # Seuraava lause on reitityspolku taustan määrittämistä varten ('admin/', admin.site.urls) ] ```
Kun määritys on valmis, käynnistä projekti ja avaa se selaimessa http://127.0.0.1:8000/admin/
Näet kirjautumissivun taustalla.
Jos kirjautumissivu on olemassa, sinulla on oltava vastaava tili kirjautuaksesi sisään.
Joten meidän on ensin luotava superhallintatili.
Avaa pääte, siirry projektihakemistoon ja anna seuraava komento luodaksesi superhallintatilin.
python manage.py createsuperuser
Sitten pääte palauttaa sinulle tämän tietorivin ja pyytää sinua syöttämään päähallinnan käyttäjänimen (tilin)
Username (leave blank to use 'xxx'): admin
'xxx' tässä on tietokoneeni nimi, voit kirjoittaa superhallintatilin kaksoispisteen jälkeen.Mitä kirjoitin tänne, onadmin
。
Kun olet syöttänyt käyttäjätunnuksesi, se pyytää sinua edelleen antamaan sähköpostiosoitteesi.
Email address: 123@qq.com
Kun olet syöttänyt sähköpostiosoitteesi, sinua pyydetään antamaan salasana kahdesti.
- Password:
- Password (again):
Salasana, jonka kirjoitan tähän, on 12345678
, se muistuttaa minua älykkäästi liian yleisistä salasanoista, mutta kirjoitan y ja pysyn niin yksinkertaisissa salasanoissa.
- This password is too common.
- This password is entirely numeric.
- Bypass password validation and create user anyway? [y/N]: y
- Superuser created successfully.
Katso Superuser created successfully.
Tämä lause tarkoittaa, että tili on luotu onnistuneesti.
Avaa nyt selaimessa http://127.0.0.1:8000/admin/
, tilin syöttö admin
, salasanan syöttö 12345678
Voit kirjautua sisään onnistuneesti.
Olemme aiemmin käyttäneet koodia tietokannan käyttöön, mikä ei ole niin kätevää.
Django
Tarjoaa tavan sitoa sovellusmalli taustalle, jotta voimme suoraan käyttää tietoja taustarajapinnassa.
Luotu edellisestä artikkelista account
Käytä esimerkkinä.
olla olemassa account
löytyy sovelluksestaadmin.py
tiedosto, kirjoita seuraava koodi.
``` python
osoitteesta django.contrib tuonti admin osoitteesta account.models tuonti käyttäjä
class UserAdmin(admin.ModelAdmin): # Näytettävä sisältö list_display = ['käyttäjänimi', 'sähköposti']
admin.site.register(User, UserAdmin) ```
Se on esiteltävä täällä ensin admin
jaUser
, koska haluamme account
Sovellusmalli liittyy taustajärjestelmään.
Luo tiedosto nimeltä UserAdmin
Luokka, kirjoita se siihenlist_display = ['username', 'email']
, mikä tarkoittaa näkyvää taustasivullausername
jaemail
nämä kaksi kenttää.
viimeinkin admin.site.register(User, UserAdmin)
tarkoittaaUser
Malli ja taustaosa on sidottu yhteen.
Suorita projekti ja avaa http://127.0.0.1:8000/admin/
Ja kirjaudu sisään, näet juuri sitomasi mallin.
Napsauta "Käyttäjätaulukot" nähdäksesi tiedot tästä taulukosta tietokannassa.
Voit lisätä uusia tietoja tähän taulukkoon napsauttamalla Lisää-painiketta.
Voit myös muokata ja poistaa tiettyjä tietoja.
Muokatut tiedot taustasivulla vaikuttavat suoraan tietokannan tietoihin.
Laita samalla tavalla blog
Sovellusmalli liittyy taustajärjestelmään. Toiminta tässä on sama kuin ennen, joten en selitä sitä uudelleen.
``` python
osoitteesta django.contrib tuonti admin osoitteesta blog.models tuonti artikkeli
class ArticleAdmin(admin.ModelAdmin): # Näytettävä sisältö list_display = ['id', 'title']
admin.site.register(Article, ArticleAdmin) ```
Luodaan artikkeli ja katsotaan.
Napsauta "Artikkelitietotaulukot" -kohdan vieressä olevaa Lisää-painiketta ja täytä seuraava sisältö.
Klikkaus SAVE
Painikkeen painamisen jälkeen tiedot kirjoitetaan tietokantaan. Palaa "Artikkelitietotaulukot" -luettelosivulle nähdäksesi juuri kirjoitetut tiedot.
Jos et ole varma koko projektin sisällöstä, voit katsoa, mitä kokosin"Django-pylväs"。
Aiemmissa toimissa tarkkaavaiset työntekijät ovat saattaneet huomata ongelmia, kuten miksi käyttöliittymä on englanninkielinen? Miksi taulukon nimen jälkeen on "s"?Miksi valinnainen Käyttäjä-kenttä artikkelia luotaessa ei ole käyttäjänimi vaanUser object(1)
?
Seuraavaksi ratkaisemme nämä ongelmat yksitellen.
Avaa projekti settings.py
tiedosto, löytyiLANGUAGE_CODE
, aseta sen arvoksi'zh-hans'
.ja sitten löytääTIME_ZONE
aseta se päälleAsia/Shanghai
。
``` python
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Aasia/Shanghai' ```
Mutta tällä kertaa ACCOUNT
jaBLOG
Täällä vielä englanniksiDjango
Sitä ei voi kääntää suoraan kiinaksi Sinun on määritettävä aliakset näille kahdelle sovellukselle.
Kokoonpano on jokaisen sovelluksen omassa apps.py
tiedosto, läpiverbose_name
Muuttuja sarakkeen nimen mukauttamiseen.
kirjoittaja account
Käytä esimerkkinä.
``` python
django.appsista tuo AppConfig
luokka AccountConfig(AppConfig): oletusautofield = 'django.db.models.BigAutoField' name = 'tili' verbose_name = 'Käyttäjien hallinta' ```
blog
Sama pätee.
``` python
django.appsista tuo AppConfig
luokka BlogConfig(AppConfig): oletusautofield = 'django.db.models.BigAutoField' name = 'blogi' verbose_name = 'Artikkelinhallinta' ```
Päivitä sivu tällä hetkellä, niin näet, että sarakkeen nimi on muuttunut.
"s" taulukon nimen jälkeen on Django
Sen mukana tulee poistaaksesi tämän "s":n, sinun on myös määritettävä taulukon alias.
Jokaisen sovelluksen mallitiedostossa (models.py
) määritetty sisään Meta
tiedottavaverbose_name_plural
。
kirjoittaja account
Käytä esimerkkinä.
``` python
django.db tuontimalleista
luokka Käyttäjä(mallit.Malli): id = mallit.Automaattinen kenttä(ensisijainenkey=True) # username = models.CharField('käyttäjänimi', maxpituus=30, null=True, blank=True, ainutlaatuinen=True) # Salasanasalasana = models.CharField('salasana', max_length=30) # Sähköpostiosoite = models.EmailField('Sähköposti', unique=True, null= Totta, tyhjä = Totta)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
```
Päivitä sivu, niin näet, että "s" "Käyttäjätaulukon" jälkeen on poissa.
blog
Sama syy.
Kun lisäämme artikkelin, meidän on syötettävä ja valittava artikkelin kirjoittaja. Artikkelitaulukon kirjoittaja liitetään käyttäjätaulukkoon.
Kun lisäät tekijän, sivu näyttää suoraan nimen "Käyttäjäobjekti".
Meidän pitäisi näyttää käyttäjätunnus.
Muokataan sitä ensin blog
Näytettävät kentät.
``` python
osoitteesta django.contrib tuonti admin osoitteesta blog.models tuonti artikkeli
def get_author(obj): palauttaa obj.user.username
luokka ArtikkeliAdmin(admin.ModelAdmin): # Näytettävä sisältö # Voit käyttää get here tekijä korvataan käyttäjätunnuksella. Tähän ei tarvitse lisätä yksittäisiä lainausmerkkejä tai sulkeita. # django käyttää listaa Näytettäessä menetelmälle parametri välitetään oletusarvoisesti. listanäyttö = ['id', gettekijä, 'nimi', 'sisältö']
saadakirjoittaja.lyhytkuvaus = 'Kirjoittaja'
admin.site.register(Article, ArticleAdmin) ```
Yhdistä vierasavain get_author-menetelmään username
Kentät näytetään.
Tässä vaiheessa voimme nähdä, kuka tämän artikkelin kirjoittaja on. Mutta meidän on silti näytettävä käyttäjänimi muokkaussivulla.
Tarvitsee muokata tällä hetkellä User
Vain mallit käyvät.
``` python
django.db tuontimalleista
luokka Käyttäjä(mallit.Malli): id = mallit.Automaattinen kenttä(ensisijainenkey=True) # username = models.CharField('käyttäjänimi', maxpituus=30, null=True, blank=True, ainutlaatuinen=True) # Salasanasalasana = models.CharField('salasana', max_length=30) # Sähköpostiosoite = models.EmailField('Sähköposti', unique=True, null= Totta, tyhjä = Totta)
- class Meta:
- # 自定义表名
- db_table = 'user'
- # 表别名
- verbose_name = '用户表'
- verbose_name_plural = '用户表'
-
- # 返回用户名
- def __str__(self):
- return self.username
```
olla olemassa account/models.py
Lisää lopussa__str__
menetelmä, palautususername
。
Tällä hetkellä käyttäjänimi näkyy artikkelitietojen muokkaussivulla.
Artikkelinhallintasivulla, jos haluat muokata artikkelia, voit napsauttaa vain "ID"-kenttää siirtyäksesi muokkaussivulle.Jos haluat siirtyä muokkaussivulle napsauttamalla muita kenttiä, sinun on määritettävä se manuaalisesti.blog/admin.py
Haluan esimerkiksi napsauttaa "TITLE" siirtyäkseni muokkaussivulle.
``` python
luokka Artikkelinhallinta(admin.ModelAdmin): # Luettelo näytettävästä sisällöstänäyttö = ['id', getauthor, 'title', 'content'] # hyppykenttien luettelonäyttölinks = ['id', 'title'] # Jätä jokin koodi pois```
olen täällä ArticleAdmin
lisätty sisäänlist_display_links = ['id', 'title']
, joka osoittaa napsautuksella id
jatitle
Voit siirtyä muokkaussivulle.
Kun muokkaat sisältöä, emme halua joidenkin kenttien olevan muokattavissa. Esimerkiksi blogin tunnusta ei voi muuttaa.
sallittu blog/admin.py
Lisätäreadonly_fields
Määrittää kentät, joita ei voi muokata.
``` python
class ArticleAdmin(admin.ModelAdmin): # Vain luku -attribuutti readonly_fields = ['id'] # Jätä koodi pois````
Tällä hetkellä muokatessa id-kentän arvoa ei voi muuttaa.
Siinä kaikki tälle artikkelille. Seuraavassa artikkelissa esittelen kuinka ladata tietokannan tiedot etusivulla.
Tykkää + Seuraa + Kerää = Opittu