Aplicații web în Python
2020
Curs introductiv de web development folosind Python și Django
Despre ce discutăm azi
Fișiere statice, media și file upload
Fișiere statice
Fișiere statice
Configurarea fișierelor statice:
URL-ul pentru path-ul respectiv
{% load static %}
<img src="{% static "my_app/example.jpg" %}">
(my_app/static/js/example.js)
url_patterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT))
Servirea fișierelor statice
Fișiere media
Fișiere media
MEDIA_ROOT
- este calea absolută în sistem către directorul în care urmează să fie ținute fișierele încărcate de utilizatori.
- valoarea acestuia trebuie să fie diferită față de valoarea variabilei STATIC_ROOT
MEDIA URL
Fișiere media
În development, putem să servim fișiere încărcate de utilizatori adăugând următorul block în urls.py:
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
File field
class MyModel(models.Model):
# file will be uploaded to MEDIA_ROOT/uploads
upload = models.FileField(upload_to='uploads/')
Acest tip de field primește două atribute opționale:
File field
Un atribut al unui model de tip File field ne pune la dispoziție următoarele date:
FileField în Form și Template
în Form:
class UploadFileForm(forms.Form):
avatar = forms.FileField()
în Template:
<form method="post" enctype='multipart/form-data'>
<label for="id_avatar">Avatar</label>
<input type="file" name="avatar" id="id_avatar">
</form>
FileField în Form și Template
Cum afișăm un atribut de tip FileField?
{% if object.avatar %}
<img src="{{ object.avatar.url }}">
{% endif %}
Fixtures
Fixtures
Fisier JSON
[
{
"model": "myapp.person",
"pk": 1,
"fields": {
"first_name": "John",
"last_name": "Lennon"
}
},
{
"model": "myapp.person",
"pk": 2,
"fields": {
"first_name": "Paul",
"last_name": "McCartney"
}
}
]
Fisier YAML
- model: myapp.person
pk: 1
fields:
first_name: John
last_name: Lennon
- model: myapp.person
pk: 2
fields:
first_name: Paul
last_name: McCartney
Fixtures
Ex:
python manage.py dumpdata
python manage.py dumpdata app.Country
python manage.py dumpdata app.Country > app/fixtures/countries.json
Fixtures
Ex:
python manage.py loaddata countries.json
Ce a aparut nou în aplicație?