Skip to content

Commit

Permalink
Add snippets related to Django form layout formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
will-i-amv committed Jan 10, 2022
1 parent 47bc61b commit 1f19609
Showing 1 changed file with 254 additions and 0 deletions.
254 changes: 254 additions & 0 deletions beginningdjango-master/6_django_forms/chapter6.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,260 @@
" ),\n",
" ])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set Up the Layout for Django Forms in Templates"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from django import forms"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.19. Django form class definition"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class ContactForm(forms.Form):\n",
" name = forms.CharField(required=False)\n",
" email = forms.EmailField(label='Your email')\n",
" comment = forms.CharField(widget=forms.Textarea)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.20. Django form output with form.as_table"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"<tr>\n",
" <th><label for=\"id_name\">Name:</label></th>\n",
" <td><input id=\"id_name\" name=\"name\" type=\"text\" /></td>\n",
"</tr>\n",
"<tr>\n",
" <th><label for=\"id_email\">Your email:</label></th>\n",
" <td><input id=\"id_email\" name=\"email\" type=\"email\" required/></td>\n",
"</tr>\n",
"<tr>\n",
" <th><label for=\"id_comment\">Comment:</label></th>\n",
" <td><textarea cols=\"40\" id=\"id_comment\" name=\"comment\" rows=\"10\" required>\\r\\n</\n",
" textarea>\n",
" </td>\n",
"</tr>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.21. Django form output with form.as_p\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"<p>\n",
" <label for=\"id_name\">Name:</label> <input id=\"id_name\" name=\"name\" type=\"text\" />\n",
"</p>\n",
"<p>\n",
" <label for=\"id_email\">Your email:</label> <input id=\"id_email\" name=\"email\" type=\"email\" \n",
" required/>\n",
"</p>\n",
"<p>\n",
" <label for=\"id_comment\">Comment:</label> <textarea cols=\"40\" id=\"id_comment\" \n",
" name=\"comment\" rows=\"10\" required>\\r\\n</textarea>\n",
"</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.22. Django form output with form.as_ul\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"<li>\n",
" <label for=\"id_name\">Name:</label> <input id=\"id_name\" name=\"name\" type=\"text\" />\n",
"</li>\n",
"<li>\n",
" <label for=\"id_email\">Your email:</label> <input id=\"id_email\" name=\"email\" type=\"email\" \n",
" required/>\n",
"</li>\n",
"<li><label for=\"id_comment\">Comment:</label> <textarea cols=\"40\" id=\"id_comment\" \n",
" name=\"comment\" rows=\"10\" required></textarea>\n",
"</li>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.23. Django form {% for %} loop over all fields"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"{% for field in form %}\n",
" <div class=\"row\">\n",
" <div class=\"col-md-2\">\n",
" {{ field.label_tag }}\n",
" {% if field.help_text %}\n",
" <sup>{{ field.help_text }}</sup>\n",
" {% endif %}\n",
" {{ field.errors }}\n",
" </div>\n",
" <div class=\"col-md-10 pull-left\">\n",
" {{ field }}\n",
" </div>\n",
" </div>\n",
"{% endfor %}\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.24. Django form field_order option to enforce field order\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class ContactForm(forms.Form):\n",
" name = forms.CharField(required=False)\n",
" email = forms.EmailField(label='Your email')\n",
" comment = forms.CharField(widget=forms.Textarea)\n",
" field_order = ['email','comment','name']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.25. Django form error_css_class and required_css_class fields to apply CSS formatting\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class ContactForm(forms.Form):\n",
" name = forms.CharField(required=False)\n",
" email = forms.EmailField(label='Your email')\n",
" comment = forms.CharField(widget=forms.Textarea)\n",
" error_css_class = 'error'\n",
" required_css_class = 'bold'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.27. Django loop over form.<field_name>.errors"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"{% for field in form %}\n",
" <div class=\"row\">\n",
" <div class=\"col-md-2\">\n",
" {{ field.label_tag }}\n",
" {% if field.help_text %}\n",
" <sup>{{ field.help_text }}</sup>\n",
" {% endif %}\n",
" {% for error in field.errors %}\n",
" <div class=\"row\">\n",
" <div class=\"alert alert-danger\">{{error}}</div>\n",
" </div>\n",
" {% endfor %}\n",
" </div>\n",
" <div class=\"col-md-10 pull-left\">\n",
" {{ field }}\n",
" </div>\n",
" </div>\n",
"{% endfor %}\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6.28. Django form.errors and form.non_field_errors with custom HTML output\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"<!-- Field errors -->\n",
"\n",
"{% if form.errors %}\n",
" <div class=\"row\">\n",
" {% for field_with_error, error_messages in form.errors.items %}\n",
" <div class=\"alert alert-danger\">{{field_with_error}} {{error_messages}}</div>\n",
" {% endfor %}\n",
" </div>\n",
"{% endif %}\n",
"\n",
"<!-- Non-field errors -->\n",
"\n",
"{% if form.non_field_errors %}\n",
" <div class=\"row\">\n",
" {% for error in form.non_field_errors %}\n",
" <div class=\"alert alert-danger\">{{error}}</div>\n",
" {% endfor %}\n",
" </div>\n",
"{% endif %}\n"
]
}
],
"metadata": {
Expand Down

0 comments on commit 1f19609

Please sign in to comment.