Come ho capito, si dovrebbe sempre usare uno TextField
per una stringa di lunghezza variabile quando si utilizza un database PostgreSQL perché la differenza di velocità tra uno TextField
e uno CharField
è trascurabile con PostgreSQL. Sono relativamente nuovo a Django e stavo considerando l'utilizzo di uno TextField
per URL di lunghezza variabile nel mio database. Mi chiedevo se ci sono dei vantaggi nell'utilizzo di URLField
? Sarebbe considerata una cattiva forma usare uno TextField
piuttosto che uno URLField
per gli URL?Vantaggi dell'utilizzo di URLField su TextField?
risposta
URLField è in realtà CharField w/supporto del modello Regexp a base URL corrente e un validatore online (che è stato sostituito da un validatore basato RegEx), è possibile utilizzare TextField se non vi interessa la lunghezza-limitazione della URL
Inoltre, l'utilizzo di CharField o TextField dipende dal vincolo della lunghezza massima sul campo e dal tipo di elemento più adatto per la modifica: area di testo o input. Sul lato PostgreSQL, non vi è alcuna differenza significativa.
https://docs.djangoproject.com/en/dev/ref/models/fields/#urlfield Ovviamente è possibile utilizzare CharField/TextField ma gestire l'input dell'utente e assicurarsi che tutto ciò che l'utente inserisce sia pronto.
Dal codice sorgente:
# Come con CharField, questo farà sì che la convalida URL da eseguire
Se si vede il URLField source code troverete in realtà è un CharField con validatore URL.
Inoltre ci sono altri campi pronti per l'uso come EmailField, ImageField, * Field!
Prova questa classe:
class LongURLField(TextField):
description = 'Long URL'
def __init__(self, verbose_name=None, name=None, **kwargs):
TextField.__init__(self, verbose_name, name, **kwargs)
self.validators.append(validators.URLValidator())
def formfield(self, **kwargs):
# As with TextField, this will cause URL validation to be performed
# twice.
defaults = {
'form_class': forms.URLField,
}
defaults.update(kwargs)
return super(LongURLField, self).formfield(**defaults)
imposta max_length su 2000 e hai il campo perfetto :) – gabn88
- 1. prefisso http urlfield django
- 2. Vantaggi di [HandleError] su Application_Error
- 3. Vantaggi di Parcelable su JSON
- 4. Vantaggi di Tesla su GeForce
- 5. Vantaggi di MVVM su MVC
- 6. Vantaggi di MySQLi su MySQL
- 7. AutoCapitalization di TextField di UIAlertView
- 8. Django - sostituisci le parti del tuo urlfield
- 9. Come eseguire attività su javaFX TextField su onfocus e outfocus?
- 10. Django - Admin: list_display TextField
- 11. Vantaggi dell'uso di react-bootstrap su bootstrap
- 12. Vantaggi dell'utilizzo di Enums su collezioni
- 13. JavaFX TextField EventHandler
- 14. JavaFX ricerca textfield
- 15. Textfield shouldchangecharactersinrange swift
- 16. TextField Custom for Validate
- 17. Get int da textField
- 18. JavaFX TextField CSS
- 19. Django CharField vs TextField
- 20. TextField manca in django.forms
- 21. QuerySet per TextField non vuota
- 22. Emberjs - disattivare e attivare TextField
- 23. Come si imposta lo stato attivo su Textfield in Swing?
- 24. Come impostare lo stato attivo su un materiale TextField?
- 25. Vantaggi di TypeScript
- 26. Etichetta di cambio del Wicket/valore textfield
- 27. Creazione di un TextField con completamento automatico
- 28. Convalidare EmberJS TextField al volo?
- 29. JavaFX 2.2 FXML Validated TextField
- 30. TextField() Imposta posizione del cursore
Per la cronaca, [IE non può caricare gli URL più lungo di circa 2.000 caratteri] (https://stackoverflow.com/questions/417142/what-is-the- lunghezza massima di un URL in diversi browser), quindi è possibile impostare 'max_length' su 2000 su un' URLField' e chiamarlo un giorno. – mlissner
Qualche riferimento alla deprecazione di URLField? – pravin
@pravin Non è l'URLField ma il suo precedente validatore è stato deprecato. Il validatore stava accedendo all'URL online per verificare, per ora è sostituito da un validatore regex per verificare la convalida del formato dell'URL. – okm