购买水果项目,要有前后端,用sqllite3数据库和django框架,实例代码
时间: 2023-10-22 10:07:44 浏览: 175
下面是一个简单的购买水果项目的实例代码,使用了 Django 框架和 SQLite3 数据库。本项目涉及前后端交互和数据库操作。
首先,需要安装 Django 和 SQLite3:
```
pip install Django
pip install pysqlite3
```
然后创建一个 Django 项目:
```
django-admin startproject fruitstore
```
进入项目目录:
```
cd fruitstore
```
创建一个应用:
```
python manage.py startapp shop
```
接下来,我们需要创建数据库表。在 `shop` 应用的 `models.py` 文件中定义数据模型:
```python
from django.db import models
class Fruit(models.Model):
name = models.CharField(max_length=50)
price = models.DecimalField(max_digits=6, decimal_places=2)
image_url = models.URLField()
class Order(models.Model):
fruit = models.ForeignKey(Fruit, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1)
total_price = models.DecimalField(max_digits=6, decimal_places=2)
```
然后在 `settings.py` 中设置数据库配置:
```python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
```
执行数据库迁移:
```
python manage.py makemigrations
python manage.py migrate
```
接下来,我们需要创建视图函数和模板。在 `shop` 应用的 `views.py` 文件中定义视图函数:
```python
from django.shortcuts import render
from django.http import HttpResponseRedirect, JsonResponse
from .models import Fruit, Order
def index(request):
fruits = Fruit.objects.all()
context = {'fruits': fruits}
return render(request, 'shop/index.html', context)
def add_to_cart(request):
fruit_id = request.POST.get('fruit_id')
quantity = int(request.POST.get('quantity'))
fruit = Fruit.objects.get(id=fruit_id)
total_price = fruit.price * quantity
order = Order(fruit=fruit, quantity=quantity, total_price=total_price)
order.save()
return JsonResponse({'success': True})
```
在 `shop` 应用下创建 `templates/shop/index.html` 模板文件,用于显示水果列表和购物车表单:
```html
{% extends 'base.html' %}
{% block content %}
<h1>水果商店</h1>
<ul>
{% for fruit in fruits %}
<li>
{{ fruit.name }} - ¥{{ fruit.price }}
<form class="add-to-cart-form" method="POST" action="{% url 'add_to_cart' %}">
{% csrf_token %}
<input type="hidden" name="fruit_id" value="{{ fruit.id }}">
<input type="number" name="quantity" value="1" min="1">
<button type="submit">加入购物车</button>
</form>
</li>
{% endfor %}
</ul>
{% endblock %}
{% block scripts %}
<script>
$(document).ready(function() {
$('.add-to-cart-form').on('submit', function(event) {
event.preventDefault();
var form = $(this);
var formData = form.serialize();
$.ajax({
url: form.attr('action'),
type: 'POST',
data: formData,
success: function(response) {
alert('加入购物车成功!');
},
error: function(jqXHR, status, error) {
alert('加入购物车失败!');
}
});
});
});
</script>
{% endblock %}
```
最后,在项目的 `urls.py` 文件中设置路由:
```python
from django.urls import path
from .views import index, add_to_cart
urlpatterns = [
path('', index, name='index'),
path('add-to-cart/', add_to_cart, name='add_to_cart'),
]
```
现在,启动开发服务器:
```
python manage.py runserver
```
访问 `http://127.0.0.1:8000/` 就可以看到水果商店页面了。添加水果到购物车后,购物车数据会保存在 SQLite3 数据库中。
阅读全文