【实战演练】python开发一个在线商城
发布时间: 2024-06-25 19:09:31 阅读量: 81 订阅数: 102
![【实战演练】python开发一个在线商城](https://img-blog.csdnimg.cn/1d7af12c887548a0b3cc6018445f3fd7.png)
# 1. Python Web 开发基础**
Python 是一种强大的编程语言,广泛用于 Web 开发。它提供了一系列库和框架,使开发人员能够快速轻松地构建健壮且可扩展的 Web 应用程序。
在 Web 开发中,Python 的主要优势之一是其简洁性和可读性。Python 代码易于理解和维护,这对于大型和复杂的应用程序至关重要。此外,Python 拥有一个庞大的社区和丰富的文档,为开发人员提供了丰富的资源和支持。
# 2.1 Django 的架构和工作原理
Django 是一款遵循 MVC 设计模式的 Web 框架,其架构主要分为三层:模型层、视图层和模板层。
### 2.1.1 模型层
模型层负责定义数据模型,用于表示应用程序中的数据结构。模型类继承自 `django.db.models.Model`,并定义了与数据库表相对应的属性。例如:
```python
class User(models.Model):
username = models.CharField(max_length=150)
password = models.CharField(max_length=128)
email = models.EmailField()
```
### 2.1.2 视图层
视图层负责处理 HTTP 请求,并根据请求生成响应。视图函数通常继承自 `django.views.View`,并定义了 `get()`、`post()` 等方法来处理不同的 HTTP 请求类型。例如:
```python
class UserView(View):
def get(self, request):
users = User.objects.all()
return render(request, 'users.html', {'users': users})
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
user = User(username=username, password=password)
user.save()
return redirect('users')
```
### 2.1.3 模板层
模板层负责将数据渲染为 HTML 页面。Django 使用 Jinja2 模板引擎,模板文件通常以 `.html` 为后缀。模板中可以使用变量、标签和过滤器来动态生成 HTML 内容。例如:
```html
{% for user in users %}
<li>{{ user.username }}</li>
{% endfor %}
```
### 2.1.4 Django 的工作原理
Django 的工作原理可以概括为以下流程:
1. 用户发送 HTTP 请求到 Django 服务器。
2. Django 根据请求的 URL 路由到相应的视图函数。
3. 视图函数处理请求,并根据需要查询数据库或执行其他操作。
4. 视图函数返回一个响应对象,其中包含要渲染的模板和数据。
5. Django 使用模板引擎将数据渲染为 HTML 页面。
6. Django 将 HTML 页面返回给用户浏览器。
# 3.1 用户管理
#### 3.1.1 用户注册和登录
**用户注册**
Django 提供了 `UserCreationForm` 表单类,用于创建用户注册表单。该表单包含用户名、密码和电子邮件字段。
```python
from django.contrib.auth.forms import UserCreationForm
class RegisterForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ["username", "email", "password1", "password2"]
```
**用户登录**
Django 提供了 `AuthenticationForm` 表单类,用于创建用户登录表单。该表单包含用户名和密码字段。
```python
from django.contrib.auth.forms import AuthenticationForm
class LoginForm(AuthenticationForm):
username = forms.CharField(max_length=254)
password = forms.CharField(widget=forms.PasswordInput)
```
#### 3.1.2 用户信息管理
**用户模型扩展**
为了存储更多用户信息,可以扩展 Django 的默认用户模型。
```python
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone_number = models.CharField(max_length=11, blank=True)
address = models.CharField(max_length=255, blank=True)
```
**用户管理视图**
创建视图函数来处理用户管理操作,如修改用户信息、重置密码等。
```python
from django.contrib.auth import update_session_auth_hash
def update_user_info(request):
if request.method == "POST":
form = UpdateUserForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
```
0
0