python中Django入门(三)
1. 表单和表单处理
Django提供了表单处理功能,可以方便地处理HTML表单。你可以在myapp/forms.py中定义一个表单类:
python复制代码
|
# myapp/forms.py |
|
from django import forms |
|
from .models import Blog |
|
|
|
class BlogForm(forms.ModelForm): |
|
class Meta: |
|
model = Blog |
|
fields = ['title', 'content'] |
然后在视图中使用这个表单:
python复制代码
|
# myapp/views.py |
|
from .forms import BlogForm |
|
|
|
def create_blog(request): |
|
if request.method == 'POST': |
|
form = BlogForm(request.POST) |
|
if form.is_valid(): |
|
form.save() |
|
return redirect('blog_list') |
|
else: |
|
form = BlogForm() |
|
return render(request, 'create_blog.html', {'form': form}) |
创建相应的模板create_blog.html,并在其中使用{{ form.as_p }}来渲染表单。
2. 更多的功能和扩展
Django提供了许多其他功能和扩展,如用户认证、中间件、第三方应用集成等。你可以通过Django的官方文档进一步学习和探索。
这只是一个简单的Django入门教程,涵盖了一些基础概念和操作。Django是一个非常强大和灵活的框架,还有很多高级特性和最佳实践等待你去学习和实践。通过不断练习和构建实际项目,你将能够更深入地掌握Django,并创建出功能强大的Web应用。
3. 用户认证和权限
Django内置了一套强大的用户认证系统,包括用户注册、登录、权限管理等。django.contrib.auth 应用提供了这些功能。
首先,确保django.contrib.auth在你的INSTALLED_APPS中:
python复制代码
|
# mysite/settings.py |
|
|
|
INSTALLED_APPS = [ |
|
# ... |
|
'django.contrib.auth', |
|
# ... |
|
] |
然后,你可以使用Django的认证系统来管理用户。例如,创建一个登录视图:
python复制代码
|
# myapp/views.py |
|
from django.contrib.auth import authenticate, login, logout |
|
from django.shortcuts import render, redirect |
|
|
|
def login_view(request): |
|
if request.method == 'POST': |
|
username = request.POST['username'] |
|
password = request.POST['password'] |
|
user = authenticate(request, username=username, password=password) |
|
if user is not None: |
|
login(request, user) |
|
return redirect('blog_list') |
|
else: |
|
# 登录失败的处理逻辑 |
|
pass |
|
return render(request, 'login.html') |
|
|
|
def logout_view(request): |
|
logout(request) |
|
return redirect('login') |
创建登录页面的模板login.html:
html复制代码
|
<!-- mysite/templates/login.html --> |
|
<form method="post"> |
|
{% csrf_token %} |
|
<label for="username">Username:</label> |
|
<input type="text" id="username" name="username" required> |
|
|
|
<label for="password">Password:</label> |
|
<input type="password" id="password" name="password" required> |
|
|
|
<button type="submit">Login</button> |
|
</form> |
在urls.py中添加登录和注销的URL:
python复制代码
|
# myapp/urls.py |
|
from django.urls import path |
|
from . import views |
|
|
|
urlpatterns = [ |
|
# ... |
|
path('login/', views.login_view, name='login'), |
|
path('logout/', views.logout_view, name='logout'), |
|
# ... |
|
] |
你还可以使用Django的权限系统来控制哪些用户可以访问哪些视图或执行某些操作。