admin管理员组

文章数量:1026989

Python:披萨店主页程序练习

1指定规范:

 编写的是一个名为“pizzeria”的Web应用程序。用户可以添加pizza的名称,以及某个pizza的配料。以及阅读pizza的内容。

2开始建立虚拟环境:

首先我们要建立一个工程目录,为此新建一个文件夹,命名为pizzeria,然后打开终端切换到这个目录下,并创建一个虚拟环境。操作步骤如下:

2.1

2.2pizzeria的路径中直接输入cmd按下enter进入终端,如下图

 注意:上面我这里忘记打开pizzeria文件夹了,所以要加一步切到文件夹下

 2.3 使用 python -m venv 11_env 创建虚拟环境

 可以看到多了一个11_env的文件,到这里一切正常。

 3 激活虚拟环境

上面11_env的虚拟环境建好后,使用 11_env\scripts\activate命令激活,这个命令就是运行11_env\scripts下的activate脚本。当(11_env)有括号出现时表示成功,如图

 

 使用deactivate可以退出虚拟环境

 4 安装Django

需要安装Django,使用命令 pip install Django==4.0,这里安装4.0版本,这是比较新的版本,当出现successful表示安装成功。

 5 创建项目

接下来正式开始创建项目的框架。使用 django-admin startproject pizzeria 要注意最后有一个点,是为了让项目使用合适的目录结构,方便把应用程序部署到服务器。

6 建立数据库 

要有存储数据的地方。使用Python manage.py migrate

7 验证之前的步骤是否正确

使用 python manage.py runserver ,在浏览器中打开 localhost:8000/

 出现下图表示正确地创建了项目,到此一切正常。

 8 创建应用程序 app_name=pizzerias

重复之前的步骤,打开另一个cmd的窗口,激活虚拟环境,执行 python manage.py startapp pizzerias

可以看到多了一个pizzerias的文件夹,这就是应用程序

 

9 开始编写代码模型models.py

from django.db import models# Create your models here.
class PizzaName(models.Model):"""披萨的名称以及创建的时间"""name = models.CharField(max_length=100)date_added = models.DateTimeField(auto_now_add=True)def __str__(self):return self.name
class Topping(models.Model):"""存储对应pizza的配料"""pizza = models.ForeignKey(PizzaName,on_delete=models.CASCADE)name = models.TextField()def __str__(self):if len(self.name) > 50 :return self.name[:50] + "..."else:return self.name

10 建立超级用户以及注册模型

10.1 激活模型,打开settings.py,添加我的应用程序名称'pizzerias'

10.2 python manage.py createsuperuser

 10.3 注册模型

打开admin.py

from django.contrib import admin# Register your models here.
from pizzerias.models import PizzaName,Topping
admin.site.register(PizzaName)
admin.site.register(Topping)

11 迁移数据库

python manage.py makemigrations pizzerias

python manage.py migrate

每次修改模型都要输入,使数据库能够存储模型中的数据12 

12 网页中添加数据

http://localhost:8000/admin/

 例如 添加披萨的名称,以及每个主题披萨的内容,方面进行测试

 遇到了no such table: pizzerias_pizzaname的问题,添加moedls.py中模型的中数据字段,进行

python manage.py makemigrations pizzerias

python manage.py migrate

然后再改回来,在进行

python manage.py makemigrations pizzerias

python manage.py migrate

让数据库中的表与模型相匹配

13 开始创建pizzeria的主页

能够显示pizza的种类,点击能够每个pizza介绍的页面。

需要一个基础URL,一个显示pizza名称的URL,一个根据选中的pizza显示具体内容的URL,一共三个。

urls.py,添加属于项目的URL,为了好区分,在pizzerias中创建一个urls.py并把它导入进pizzeria的urls.py中。属于项目的URL就在新建里面更改。

 13.1 在pizzeriasz目录下新建urls.py

"""pizzerias的URL管理"""
from django.contrib import admin
from django.urls import path ,re_path
from . import viewsapp_name = 'pizzerias'
urlpatterns = [#主页path('', views.index,name='index'),
]

13.2 新建的URL导入到pizzeria下的URL中

from django.contrib import admin
from django.urls import path ,includeurlpatterns = [path('admin/', admin.site.urls),path('',include('pizzerias.urls',namespace='pizzerias')),
]

13.3 编写试图views.py

from django.shortcuts import render# Create your views here.def index(request):"""pizza的主页"""return render(request,'pizzerias/index.html')

13.4 编写HTML,在pizzerias中新建templates,在其中新建pizzerias文件夹,再创建base.html

以及index.html.

index.html

{% extends "pizzerias/base.html"%}
{% block content %}<p>欢迎来到披萨店主页</p>{% endblock content%}

base.html

<p><a href="{% url 'pizzerias:index'%}">Pizzerias</a></p>
{% block content %}{% endblock  content %}

13.5 打开http://localhost:8000/,显示如下

 14 添加披萨名称以及内容显示页面

14.1 base.html修改

<p><a href="{% url 'pizzerias:index'%}">Pizzerias</a><a href="{% url 'pizzerias:pizzaNames'%}">披萨名字</a>
</p>
{% block content %}{% endblock content %}

14.2  urls.py

"""pizzerias的URL管理"""
from django.contrib import admin
from django.urls import path ,re_path
from . import viewsapp_name = 'pizzerias'
urlpatterns = [#主页path('', views.index,name='index'),path('pizzaNames/', views.pizzaNames,name='pizzaNames'),
]

14.3 views.py

from django.shortcuts import render
from .models import PizzaName# Create your views here.def index(request):"""pizza的主页"""return render(request,'pizzerias/index.html')def pizzaNames(request):# 显示所有披萨名字pizzaNames = PizzaName.objects.order_by('date_added')context = {'pizzaNames': pizzaNames}return render(request,'pizzerias/pizzaNames.html',context)

14.4 添加pizzaNames.html

{% extends "pizzerias/base.html" %}
{% block content %}<p>披萨名字</p><ul>{% for pizzaName in pizzaNames %}<li>{{ pizzaName }}</li>{% empty %}<li> 没有数据 </li>{% endfor %}
</ul>
{% endblock content %}

14.5 效果

14.6 对pizza名字建立连接,显示 pizza中的内容

1. 修改pizzaNames.html

{% extends "pizzerias/base.html" %}
{% block content %}<p>披萨名字</p><ul>{% for pizzaName in pizzaNames %}<li><a href="{% url 'pizzerias:pizzaName' pizzaName.id %}">{{ pizzaName }}</a></li>{% empty %}<li> 没有数据 </li>{% endfor %}
</ul>
{% endblock content %}

2。 修改urls.py

"""pizzerias的URL管理"""
from django.contrib import admin
from django.urls import path ,re_path
from . import viewsapp_name = 'pizzerias'
urlpatterns = [#主页path('', views.index,name='index'),path('pizzaNames/', views.pizzaNames,name='pizzaNames'),re_path(r'^pizzaName/(?P<pizzaName_id>\d+)', views.pizzaName, name='pizzaName'),
]

3 . views.py

def pizzaName(request, pizzaName_id):pizzaName = PizzaName.objects.get(id = pizzaName_id)toppings = pizzaName.topping_set.all()context = {'toppings':toppings}return render(request,'pizzerias/pizzaName.html', context)

4. 新建 pizzaName.html

{% extends "pizzerias/base.html"%}{% block content %}
<p>{{ pizzaName}}</p><P>Toppings:</P><ul>{% for topping in toppings %}<li><P>{{topping.name|linebreaks }}</P></li>{% empty %}<li>没有内容</li>{% endfor %}</ul>{% endblock content %}

5. 如图:

 

Python:披萨店主页程序练习

1指定规范:

 编写的是一个名为“pizzeria”的Web应用程序。用户可以添加pizza的名称,以及某个pizza的配料。以及阅读pizza的内容。

2开始建立虚拟环境:

首先我们要建立一个工程目录,为此新建一个文件夹,命名为pizzeria,然后打开终端切换到这个目录下,并创建一个虚拟环境。操作步骤如下:

2.1

2.2pizzeria的路径中直接输入cmd按下enter进入终端,如下图

 注意:上面我这里忘记打开pizzeria文件夹了,所以要加一步切到文件夹下

 2.3 使用 python -m venv 11_env 创建虚拟环境

 可以看到多了一个11_env的文件,到这里一切正常。

 3 激活虚拟环境

上面11_env的虚拟环境建好后,使用 11_env\scripts\activate命令激活,这个命令就是运行11_env\scripts下的activate脚本。当(11_env)有括号出现时表示成功,如图

 

 使用deactivate可以退出虚拟环境

 4 安装Django

需要安装Django,使用命令 pip install Django==4.0,这里安装4.0版本,这是比较新的版本,当出现successful表示安装成功。

 5 创建项目

接下来正式开始创建项目的框架。使用 django-admin startproject pizzeria 要注意最后有一个点,是为了让项目使用合适的目录结构,方便把应用程序部署到服务器。

6 建立数据库 

要有存储数据的地方。使用Python manage.py migrate

7 验证之前的步骤是否正确

使用 python manage.py runserver ,在浏览器中打开 localhost:8000/

 出现下图表示正确地创建了项目,到此一切正常。

 8 创建应用程序 app_name=pizzerias

重复之前的步骤,打开另一个cmd的窗口,激活虚拟环境,执行 python manage.py startapp pizzerias

可以看到多了一个pizzerias的文件夹,这就是应用程序

 

9 开始编写代码模型models.py

from django.db import models# Create your models here.
class PizzaName(models.Model):"""披萨的名称以及创建的时间"""name = models.CharField(max_length=100)date_added = models.DateTimeField(auto_now_add=True)def __str__(self):return self.name
class Topping(models.Model):"""存储对应pizza的配料"""pizza = models.ForeignKey(PizzaName,on_delete=models.CASCADE)name = models.TextField()def __str__(self):if len(self.name) > 50 :return self.name[:50] + "..."else:return self.name

10 建立超级用户以及注册模型

10.1 激活模型,打开settings.py,添加我的应用程序名称'pizzerias'

10.2 python manage.py createsuperuser

 10.3 注册模型

打开admin.py

from django.contrib import admin# Register your models here.
from pizzerias.models import PizzaName,Topping
admin.site.register(PizzaName)
admin.site.register(Topping)

11 迁移数据库

python manage.py makemigrations pizzerias

python manage.py migrate

每次修改模型都要输入,使数据库能够存储模型中的数据12 

12 网页中添加数据

http://localhost:8000/admin/

 例如 添加披萨的名称,以及每个主题披萨的内容,方面进行测试

 遇到了no such table: pizzerias_pizzaname的问题,添加moedls.py中模型的中数据字段,进行

python manage.py makemigrations pizzerias

python manage.py migrate

然后再改回来,在进行

python manage.py makemigrations pizzerias

python manage.py migrate

让数据库中的表与模型相匹配

13 开始创建pizzeria的主页

能够显示pizza的种类,点击能够每个pizza介绍的页面。

需要一个基础URL,一个显示pizza名称的URL,一个根据选中的pizza显示具体内容的URL,一共三个。

urls.py,添加属于项目的URL,为了好区分,在pizzerias中创建一个urls.py并把它导入进pizzeria的urls.py中。属于项目的URL就在新建里面更改。

 13.1 在pizzeriasz目录下新建urls.py

"""pizzerias的URL管理"""
from django.contrib import admin
from django.urls import path ,re_path
from . import viewsapp_name = 'pizzerias'
urlpatterns = [#主页path('', views.index,name='index'),
]

13.2 新建的URL导入到pizzeria下的URL中

from django.contrib import admin
from django.urls import path ,includeurlpatterns = [path('admin/', admin.site.urls),path('',include('pizzerias.urls',namespace='pizzerias')),
]

13.3 编写试图views.py

from django.shortcuts import render# Create your views here.def index(request):"""pizza的主页"""return render(request,'pizzerias/index.html')

13.4 编写HTML,在pizzerias中新建templates,在其中新建pizzerias文件夹,再创建base.html

以及index.html.

index.html

{% extends "pizzerias/base.html"%}
{% block content %}<p>欢迎来到披萨店主页</p>{% endblock content%}

base.html

<p><a href="{% url 'pizzerias:index'%}">Pizzerias</a></p>
{% block content %}{% endblock  content %}

13.5 打开http://localhost:8000/,显示如下

 14 添加披萨名称以及内容显示页面

14.1 base.html修改

<p><a href="{% url 'pizzerias:index'%}">Pizzerias</a><a href="{% url 'pizzerias:pizzaNames'%}">披萨名字</a>
</p>
{% block content %}{% endblock content %}

14.2  urls.py

"""pizzerias的URL管理"""
from django.contrib import admin
from django.urls import path ,re_path
from . import viewsapp_name = 'pizzerias'
urlpatterns = [#主页path('', views.index,name='index'),path('pizzaNames/', views.pizzaNames,name='pizzaNames'),
]

14.3 views.py

from django.shortcuts import render
from .models import PizzaName# Create your views here.def index(request):"""pizza的主页"""return render(request,'pizzerias/index.html')def pizzaNames(request):# 显示所有披萨名字pizzaNames = PizzaName.objects.order_by('date_added')context = {'pizzaNames': pizzaNames}return render(request,'pizzerias/pizzaNames.html',context)

14.4 添加pizzaNames.html

{% extends "pizzerias/base.html" %}
{% block content %}<p>披萨名字</p><ul>{% for pizzaName in pizzaNames %}<li>{{ pizzaName }}</li>{% empty %}<li> 没有数据 </li>{% endfor %}
</ul>
{% endblock content %}

14.5 效果

14.6 对pizza名字建立连接,显示 pizza中的内容

1. 修改pizzaNames.html

{% extends "pizzerias/base.html" %}
{% block content %}<p>披萨名字</p><ul>{% for pizzaName in pizzaNames %}<li><a href="{% url 'pizzerias:pizzaName' pizzaName.id %}">{{ pizzaName }}</a></li>{% empty %}<li> 没有数据 </li>{% endfor %}
</ul>
{% endblock content %}

2。 修改urls.py

"""pizzerias的URL管理"""
from django.contrib import admin
from django.urls import path ,re_path
from . import viewsapp_name = 'pizzerias'
urlpatterns = [#主页path('', views.index,name='index'),path('pizzaNames/', views.pizzaNames,name='pizzaNames'),re_path(r'^pizzaName/(?P<pizzaName_id>\d+)', views.pizzaName, name='pizzaName'),
]

3 . views.py

def pizzaName(request, pizzaName_id):pizzaName = PizzaName.objects.get(id = pizzaName_id)toppings = pizzaName.topping_set.all()context = {'toppings':toppings}return render(request,'pizzerias/pizzaName.html', context)

4. 新建 pizzaName.html

{% extends "pizzerias/base.html"%}{% block content %}
<p>{{ pizzaName}}</p><P>Toppings:</P><ul>{% for topping in toppings %}<li><P>{{topping.name|linebreaks }}</P></li>{% empty %}<li>没有内容</li>{% endfor %}</ul>{% endblock content %}

5. 如图:

 

本文标签: Python披萨店主页程序练习