当前位置: 首页 > wzjs >正文

网页设计公司建网站网站设计无锡微网站

网页设计公司建网站网站设计,无锡微网站,网站开发方案及报价,百度网站的目标目录 第一步:创建tasks应用,加入INSTALLED_APPS 第二步:创建Task模型及其关联表单 第三步:编写路由URLConf及视图 第四步:编写模板 第五步:运行项目,查看效果 GitHub源码地址 小结 本例中…

目录

第一步:创建tasks应用,加入INSTALLED_APPS

第二步:创建Task模型及其关联表单

第三步:编写路由URLConf及视图

第四步:编写模板

第五步:运行项目,查看效果

GitHub源码地址

小结


本例中我们只讲述核心逻辑,不浪费时间在前端样式上。文末有GitHub源码地址,里面同时包含了函数视图和基于类的视图, 具体演示效果如下所示:

第一步:创建tasks应用,加入INSTALLED_APPS

本例假设你已经有了一个mysite的Django项目。我们首先使用 python manage.py startapp tasks 创建一个名为”tasks”的app,并把它计入到settings.py的INSTALLED_APPS中去。

# mysite/settings.py
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','tasks',]

然后把app下的urls路径添加到项目文件夹的urls.py里去。

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

第二步:创建Task模型及其关联表单

我们的Task模型非常简单,仅包含name和status两个字段。我们还使用ModelForm类创建了TaskForm,我们在创建任务或更新任务时需要用到这个表单。

# tasks/models.pyfrom django.db import modelsclass Status(models.TextChoices):UNSTARTED = 'u', "Not started yet"ONGOING = 'o', "Ongoing"FINISHED = 'f', "Finished"class Task(models.Model):name = models.CharField(verbose_name="Task name", max_length=65, unique=True)status = models.CharField(verbose_name="Task status", max_length=1, choices=Status.choices)def __str__(self):return self.name# tasks/forms.pyfrom .models import Taskfrom django import formsclass TaskForm(forms.ModelForm):class Meta:model = Taskfields = "__all__"

第三步:编写路由URLConf及视图

我们需要创建5个urls, 对应5个函数视图。这是因为对于Retrieve操作,我们需要编写两个函数视图,一个用户获取任务列表,一个用于获取任务详情。对于task_detailtask_updatetask_delete这个三个视图函数,我们还需要通过urls传递任务id或pk参数,否则它们不知道对哪个对象进行操作。

# tasks/urls.pyfrom django.urls import path, re_pathfrom . import views# namespaceapp_name = 'tasks'urlpatterns = [# Create a taskpath('create/', views.task_create, name='task_create'),# Retrieve task listpath('', views.task_list, name='task_list'),# Retrieve single task objectre_path(r'^(?P<pk>\d+)/$', views.task_detail, name='task_detail'),# Update a taskre_path(r'^(?P<pk>\d+)/update/$', views.task_update, name='task_update'),# Delete a taskre_path(r'^(?P<pk>\d+)/delete/$', views.task_delete, name='task_delete'),]

下面5个函数视图代码是本应用的核心代码,请仔细阅读并去尝试理解每一行代码。

# tasks/views.pyfrom django.shortcuts import render, redirect, get_object_or_404from django.urls import reversefrom .models import Taskfrom .forms import TaskForm# Create a taskdef task_create(request):# 如果用户通过POST提交,通过request.POST获取提交数据if request.method == "POST":# 将用户提交数据与TaskForm表单绑定form = TaskForm(request.POST)# 表单验证,如果表单有效,将数据存入数据库if form.is_valid():form.save()# 跳转到任务清单return redirect(reverse("tasks:task_list"))else:# 否则空表单form = TaskForm()return render(request, "tasks/task_form.html", { "form": form, })# Retrieve task listdef task_list(request):# 从数据库获取任务清单tasks = Task.objects.all()# 指定渲染模板并传递数据return render(request, "tasks/task_list.html", { "tasks": tasks,})# Retrieve a single taskdef task_detail(request, pk):# 从url里获取单个任务的pk值,然后查询数据库获得单个对象task = get_object_or_404(Task, pk=pk)return render(request, "tasks/task_detail.html", { "task": task, })# Update a single taskdef task_update(request, pk):# 从url里获取单个任务的pk值,然后查询数据库获得单个对象实例task_obj = get_object_or_404(Task, pk=pk)if request.method == 'POST':form = TaskForm(instance=task_obj, data=request.POST)if form.is_valid():form.save()return redirect(reverse("tasks:task_detail", args=[pk,]))else:form = TaskForm(instance=task_obj)return render(request, "tasks/task_form.html", { "form": form, "object": task_obj})# Delete a single taskdef task_delete(request, pk):# 从url里获取单个任务的pk值,然后查询数据库获得单个对象task_obj = get_object_or_404(Task, pk=pk)task_obj.delete() # 删除然后跳转return redirect(reverse("tasks:task_list"))

第四步:编写模板

虽然我们有5个urls,但我们只需要创建3个模板:task_list.htmltask_detail.html 和task_form.html。 最后一个模板由task_create 和task_update 视图函数共享。我们在模板中对实例对象进行判断,如果对象已存在则模板对于更新任务,否则是创建任务。task_delete视图不需要模板。

# tasks/templates/tasks/task_list.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Task List</title></head><body><h3>Task List</h3>{% for task in tasks %}<p>{{ forloop.counter }}. {{ task.name }} - {{ task.get_status_display }}(<a href="{% url 'tasks:task_update' task.id %}">Update</a> |<a href="{% url 'tasks:task_delete' task.id %}">Delete</a>)</p>{% endfor %}<p> <a href="{% url 'tasks:task_create' %}"> + Add A New Task</a></p></body></html># tasks/templates/tasks/task_detail.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Task Detail</title></head><body><p> Task Name: {{ task.name }} | <a href="{% url 'tasks:task_update' task.id %}">Update</a> |<a href="{% url 'tasks:task_delete' task.id %}">Delete</a></p><p> Task Status: {{ task.get_status_display }} </p><p> <a href="{% url 'tasks:task_list' %}">View All Tasks</a> |<a href="{% url 'tasks:task_create'%}">New Task</a></p></body></html># tasks/templates/tasks/task_form.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>{% if object %}Edit Task {% else %} Create New Task {% endif %}</title></head><body><h3>{% if object %}Edit Task {% else %} Create New Task {% endif %}</h3><form action="" method="post" enctype="multipart/form-data">{% csrf_token %}{{ form.as_p }}<p><input type="submit" class="btn btn-success" value="Submit"></p></form></body></html> 

第五步:运行项目,查看效果

运行如下命令,访问http://127.0.0.1:8000/tasks/就应该看到文初效果了。

 python manage.py makemigrationspython manage.py migratepython manage.py runserver

GitHub源码地址

本项目源码地址,里面同时包含了函数视图和基于类的视图。

小结

本例中我们使用了函数视图(functional-based views, FBV)编写了一个任务管理的CRUD小应用,后面我们将使用基于类的视图(class-based views, CBV)重写本例演示代码。

接下来几章我们将详细介绍模型、视图、URL的配置以及模板的基础知识,欢迎关注。


文章转载自:

http://bUMtervC.hrqfL.cn
http://4IYdtbLW.hrqfL.cn
http://T09o2gEB.hrqfL.cn
http://DsFe5I09.hrqfL.cn
http://CfeHMUhY.hrqfL.cn
http://hwO1rDpL.hrqfL.cn
http://ONSXu44t.hrqfL.cn
http://XdXBOjv8.hrqfL.cn
http://JOxhhFQm.hrqfL.cn
http://vMoivMoo.hrqfL.cn
http://UgYwArvR.hrqfL.cn
http://I4cm1xI7.hrqfL.cn
http://j9pGsYME.hrqfL.cn
http://8wS3OTzh.hrqfL.cn
http://66K4EPBu.hrqfL.cn
http://XWNxh57Q.hrqfL.cn
http://nAEGu0nt.hrqfL.cn
http://hhdPU5yA.hrqfL.cn
http://6S1aCx5h.hrqfL.cn
http://Cauo0Lhs.hrqfL.cn
http://9w3zcpOt.hrqfL.cn
http://v42G94hv.hrqfL.cn
http://RAB8OSXX.hrqfL.cn
http://yPELyFBF.hrqfL.cn
http://egi2xRnc.hrqfL.cn
http://U1KbAPLM.hrqfL.cn
http://6fZII5kh.hrqfL.cn
http://BA8jFmgO.hrqfL.cn
http://j8BVN85Y.hrqfL.cn
http://sGENFW0U.hrqfL.cn
http://www.dtcms.com/wzjs/724213.html

相关文章:

  • 南昌网站推广¥做下拉去118cr娄底市住房和城乡建设局网站
  • 广州seo网站多少钱WordPress Demo演示
  • 成都网站建设优创智汇太阳能公司网站建设多少钱
  • 一个空间安装多个网站室内设计培训价格
  • 开发网站的工具有哪些下城区网站建设价格查询
  • 企业网站开发目的和意义editplus网站开发
  • 如何做外贸soho做网站wordpress 找不到文件路径
  • 个人可以建立网站吗没有域名的时候建网站
  • 做外链一定要淘宝网站吗青岛市城乡建设局网站
  • 没有做等保的网站不能上线对吗怎样做网站的轮播图片
  • 佛山做网站哪家公司最好电子商务网站开发 微盘下载
  • 中山市区做网站公司做食品网站需要什么资质
  • 济南网站建设咨询小七可以赚零花钱的小程序
  • 张家港早晨网站制作windows优化大师
  • 三星官网网站中国建设企业网站官网
  • 集团网站方案策划书网站 各种 备案
  • 找人做网站注意去柬埔寨做网站是传销吗
  • 做网络竞拍的网站需要什么厦门logo设计公司
  • 青岛网站建设商家界面网站建设
  • 域名关联网站263邮箱登录登录入口
  • 四川企业品牌网站建设网络营销为导向的企业网站
  • 长沙做网站公司 上联网络wordpress chuxin
  • 招聘平台哪个好用大连seo
  • 瀑布流网站如何seo班玛县公司网站建设
  • 网站设计术语东莞建外贸企业网站
  • 石家庄网站制作软件凡科官网登录
  • 电子商务网站建设商城网站张雪峰谈建筑学前景
  • 用什么系统程序做评测网站做网站视频是什么专业
  • 网站建设 搜狐号wordpress 网站迁移
  • 可以做初中地理题的网站深圳市宝安区做网站建设的企业