Sto eseguendo una migrazione da un vecchio sito e ho bisogno di aggiungere codice HTML in modo programmatico a StreamField
su una pagina Wagtail. Come lo faccio?Come posso aggiungere il contenuto a livello di codice a Wagtail StreamField?
8
A
risposta
13
Il modo più semplice per eseguire questa operazione è assicurarsi che RawHTMLBlock
sia abilitato su StreamField
e quindi inserirlo lì. Il processo per l'aggiunta di contenuti al campo è la seguente:
import json
original_html = '<p>Hello, world!</p>'
# First, convert the html to json, with the appropriate block type
raw_json = json.dumps([{'type': 'raw_html', 'value': original_html}])
# Load Wagtail page
my_page = Page.objects.get(id=1)
# Assuming the stream field is called 'body',
# add the json string to the field
my_page.body = raw_json
my_page.save()
È possibile utilizzare questo metodo per aggiungere altri tipi di blocchi per il StreamField
- solo assicurarsi di creare un elenco di dizionari con il tipo di blocco del caso, convertire a JSON, e salva.
Problemi correlati
- 1. Uso di StreamField in snippet su Wagtail
- 2. Come posso aggiungere un contatto a livello di codice?
- 3. Come aggiungere i vincoli a livello di codice a un UIView creato a livello di codice?
- 4. Come aggiungere/rimuovere il riferimento a livello di codice?
- 5. Come posso aggiungere a livello di codice un livello sfumatura su un'immagine in Swift?
- 6. Facebook: posso aggiungere un amico a livello di codice?
- 7. WPF ListView - come aggiungere elementi a livello di codice?
- 8. Come posso aggiungere a livello di codice NewLines a una casella di testo di lavoro TFS?
- 9. Come posso aggiungere a livello di codice un ListViewItem multi-colonna senza alcun binding di dati?
- 10. Come aggiungere a livello di codice un InputAccessoryView con Autolayout?
- 11. Come aggiungere un riferimento a livello di codice
- 12. Come posso aggiungere timeout a questo codice
- 13. Come aggiungere a livello di codice in vista ViewFlipper
- 14. Come aggiungere JS a livello di codice in Magento?
- 15. Come aggiungere frammenti a livello di codice in relazione all'outlet
- 16. Come ottenere il contenuto del rendering a livello di programmazione?
- 17. Come posso comporre un messaggio a livello di codice?
- 18. Come aggiungere elementi a una stringaArray in una lista di array a livello di codice?
- 19. Ottieni codice identificativo a livello di codice
- 20. Javascript, aggiungere evento onclick a livello di codice
- 21. Come automatizzare aggiungere a Github i problemi delle applicazioni C# a livello di codice
- 22. Scorrimento a livello di codice
- 23. RadioGroup: Come controllare a livello di codice
- 24. Come attivare il metodo "tabBarController: didSelectViewController:" a livello di codice?
- 25. Come aggiungere padding a sinistra su un UIButton creato a livello di codice?
- 26. Come aggiungere a livello di codice le righe a DataGrid in C#?
- 27. Come copiare a livello di codice il contenuto dipendente asincrono negli Appunti dopo un clic?
- 28. Come leggere il margine ImageView a livello di codice?
- 29. Come posso collegare uno storyboard UISearchBar a un UISearchController creato a livello di codice?
Si noti che almeno in Wagtail 1.5 non è necessario utilizzare una stringa JSON creata da una matrice di dizionari. Puoi invece usare direttamente una serie di tuple, in questo modo: 'my_page.body = [('raw_html', original_html)]' – CoreDumpError