1,项目展示

此次项目是一个very简陋的Python web项目,是一个青青草原小羊展示系统,感兴趣的话就看下去叭!项目展示如下:

用户注册:

登录页面:

首页:

详情页(以懒羊羊为例):

修改密码:

表单页面:

 2,项目代码

首先创建一个Django项目,不会的可以看我另外一篇社区版PyCharm安装并创建Django项目,不过我后面用vscode进行编辑运行的。但是基本的创建项目的指令都是一样的。

这里我创建一个名为ypro的项目,在其中创建一个sheep应用。

项目结构如下:

打开项目所在文件夹,打开文件夹在与sheep应用同级处新建两个文件夹,一个static文件夹用于存放图片和css文件,templates文件用于后期存放模板,即html文件。

项目创建完成后就需要在settings.py中对项目进行一系列的配置,详情如下:

首先打开settings.py,在其中找到INSTALLED_APPS并把刚刚创建好的应用添加上去。

找到TEMPLATES指定存放模板的templates目录

与此同时还需要配置存放项目所用的静态文件的static目录(注:这里的static文件夹和templates文件夹后期都会用到,可以先配置好)

最后配置数据库,如果选择Django默认数据库的话就不用这一步了,但是我使用的是MySQL数据库。数据库配置如下所示:

然后我们就可以新建模型了!

打开models.py,在其中新建模型类,内容如下:

from django.db import models
class Sheeps(models.Model):name = models.CharField(max_length=100, verbose_name=u"名称")degree = models.CharField(max_length=100, verbose_name=u"喜爱程度")sheepdesc = models.CharField(max_length=100, verbose_name=u"角色描述")weight = models.CharField(max_length=100, verbose_name=u"单位")imgurl=models.ImageField(upload_to="static/upload/%Y/%m", verbose_name=u"角色图片", max_length=100)class Meta:verbose_name = u"角色"verbose_name_plural = verbose_namedef __str__(self):return self.name

利用python manage.py makemigrations生成迁移文件后利用python manage.py migrate执行迁移文件,这个时候数据库sheep中就会新建很多表,如下图所示:

找到sheep_sheeps,在其中添加最终要在前台展示的羊羊的相关信息,内容如下:

这里唯一需要注意的是imgurl中图片路径的写法。在static中新建了一个upload文件夹用于存储数据库图片。

在views.py中书写视图,其内容如下:

from django.shortcuts import render
from django.core.mail import send_mail
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib.auth import login,logout,authenticate
from random import Random
from django.views import View
from sheep.forms import SheepsForm
from sheep.models import Sheeps#首页
def index(request):allsheeps = Sheeps.objects.all()  # 动态读取return render(request, 'list.html', {"sheepslist": allsheeps,})
#详情
class detailview(View):def get(self, request, goods_id):sheeps = Sheeps.objects.get(id=int(goods_id))return render(request, "detail.html", {"sheeps": sheeps,})#登录
def loginView(request):if request.method=="POST":username=request.POST.get("username")password=request.POST.get("password")if User.objects.filter(username=username):user=authenticate(username=username,password=password)if user:if user.is_active:login(request,user)return render(request,"list.html")else:msg="用户名密码错误"else:msg="用户名不存在"return render(request,"login.html",locals()) #表单
def get_sheeps(request):sheeps=Sheeps.objects.all()SheepsForm(sheeps)return render(request, 'form.html', {"sheeps":sheeps,"form":SheepsForm})#注册
def regView(request):if request.method=="POST":username=request.POST.get("username")password=request.POST.get("password")email=request.POST.get("email")if User.objects.filter(username=username):msg="用户名已存在"else:user=User.objects._create_user(username=username,password=password,email=email)user.save()msg="注册成功"return render(request,"register.html",locals())#退出登录
def logoutView(request):logout(request)return render(request,"login.html")#修改密码
def updateView(request):if request.method=="POST":username=request.POST.get("name")password=request.POST.get("password")newpassword=request.POST.get("newpassword")#先验证用户名是否正确if User.objects.filter(username=username):#验证旧密码是否正确user=authenticate(username=username,password=password)user.set_password(newpassword)user.save()msg="密码修改成功"else:msg="用户不存在"return render(request,"update.html",locals())

在urls.py中配置路由,其内容如下:

from django.contrib import admin
from django.urls import path, re_path
from sheep import views
from sheep.views import loginView, regView, logoutView,updateViewurlpatterns = [path('admin/', admin.site.urls),path('login/', loginView),#登录path('index/', views.index),re_path(r'^detail/(?P<goods_id>\d+)/$', views.detailview.as_view(), name="detail"),path('form/',views.get_sheeps),path('reg/', regView),#注册path('logout/', logoutView),#退出登录path('update/', updateView),#修改密码
]

在templates文件夹中新建html文件,分别如下:

login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>用户登录</title>
</head>
<body><style>body{background: url(../static/sheep/sy.jpeg);background-size: cover;}form{width: 500px;height: 500px;margin: auto;position: relative;}input{border: 2px solid aliceblue;font-size: 4px;}button{/* width: 20px; */margin-left: 30%;position: absolute;}</style><div class="bk"><form method="POST" action="/index/" class="a">{%csrf_token%} 用户名:<input type="text" name="username" /><br/> 密 码:<input type="password" name="password" /><br/><button type="submit">登录</button> {{ msg }}</form></div>
</body>
</html>

list.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>商品列表</title><link rel="stylesheet" type="text/css" href="/static/css/reset.css"><link rel="stylesheet" type="text/css" href="/static/css/main.css">
</head>
<body><style>#out{left: 80%;position: relative;font-size: 20px;color: cadetblue;}</style><a id="out"  href="/logout/">退出登录</a><div class="header" style="height:100px"></div><div class="main_wrap clearfix"><div class="r_wrap fr clearfix"><div class="sort_bar"><a href="#" class="active">角色展示</a></div><ul class="goods_type_list clearfix">{% for item in sheepslist %}<li><a href="{% url 'detail' item.id %}"><img src="/{{item.imgurl}}"></a><h4><a href="{% url 'detail' item.id %}">{{item.name}}</a></h4><div class="operate"><span class="prize">¥{{item.degree}}</span><span class="unit">{{item.degree}}/{{item.weight}}g</span><a href="#" class="add_goods" title="加入购物车"></a></div></li>{% endfor %}</ul></div></div><div class="footer" style="height:100px"></div>
</body>
</html>

detail.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>商品详情</title><link rel="stylesheet" type="text/css" href="/static/css/reset.css"><link rel="stylesheet" type="text/css" href="/static/css/main.css">
</head>
<body><style>img{width: 350px;}#out{left: 80%;position: relative;font-size: 20px;color: cadetblue;}</style><a id="out"  href="/logout/">退出登录</a><div class="header" style="height:100px"></div><div class="goods_detail_con clearfix"><div class="goods_detail_pic fl"><img src="/{{sheeps.imgurl}}"/></div><div class="goods_detail_list fr"><h3>{{sheeps.name}}</h3><div class="prize_bar"><span class="show_pirze">¥<em>{{sheeps.degree}}</em></span><span class="show_unit">重量:{{sheeps.weight}}g</span></div><div class="total">总价:<em>{{sheeps.degree}}</em></div><div class="operate_btn"><!-- <a href="javascript:;" class="buy_btn">立即购买</a> --><a href="javascript:;" class="add_cart" id="add_cart">♡ 给他点赞!♡</a>              </div></div></div><div class="main_wrap clearfix"><div class="l_wrap fl clearfix"><div class="new_goods"><h3>新人推荐</h3><ul><li><a href="#"><img src="/static/sheep/xyy.jpg"></a><h4><a href="#">喜羊羊</a></h4><div class="prize">¥99.90</div></li><li><a href="#"><img src="/static/sheep/myy.jpg"></a><h4><a href="#">美羊羊</a></h4><div class="prize">¥88.80</div></li></ul></div></div><div class="r_wrap fr clearfix"><ul class="detail_tab clearfix"><li class="active">角色介绍</li></ul><div class="tab_content"><dl><dt>商品详情:</dt><dd>{{sheeps.sheepdesc}}</dd></dl></div></div></div><div class="fotter" style="height:100px"></div>
</body>
</html>

register.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>用户注册</title>
</head>
<body><style>body{background: url(../static/sheep/reg.jpeg);} form{width: 500px;height: 500px;margin: auto;position: relative;   }button{margin-left: 30%;position: absolute;}</style><form method="POST" action="/reg/">{%csrf_token%} 用户名:<input type="text" name="username" /><br/>密 码:<input type="password" name="password" /><br/> <button type="submit">注册</button> {{ msg }}</form>
</body>
</html>

update.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>修改密码</title>
</head>
<body><style>body{background: url(../static/sheep/update.jpeg);background-size: cover;}form{width: 500px;margin: auto;}</style><form method="POST" action="/update/">{%csrf_token%} 用户名:<input type="text" name="username" /><br/> 密码:<input type="password" name="password" /><br/> 新密码:<input type="password" name="newpassword" /><br/><button type="submit">修改</button> {{ msg }}</form>
</body>
</html>

admin后台管理,只需通过python manage.py  createsuperuser来创建超级用户,随后在admin.py添加如下内容:

from django.contrib import admin
from sheep.models import Sheepsclass sheepsAdmin(admin.ModelAdmin):list_display = ('name', 'degree','sheepdesc','weight')list_editable = ('sheepdesc',)search_fields = ('name',)
admin.site.register(Sheeps,sheepsAdmin)  #将模型注册到admin后台中

将admin后台的文字设置为中文:

表单:

在应用下创建forms.py,其中内容如下:

from django.forms import ModelForm
from sheep.models import Sheeps
class SheepsForm(ModelForm):class Meta:model = Sheepsfields = ['name', 'degree','sheepdesc','weight']

form.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>表单</title><link rel="stylesheet" type="text/css" href="/static/css/reset.css"><link rel="stylesheet" type="text/css" href="/static/css/main.css">
</head>
<body><style>body{background: url(../static/sheep/bk.jpeg);background-size: cover;}#out{left: 80%;position: relative;font-size: 20px;color: cadetblue;}</style> <a id="out"  href="/logout/">退出登录</a>{% for item in sheeps %}<li>{% csrf_token %}<label for="name"> 角色名称</label><input type="text" value={{item.name}} id="name"><label for="degree">喜爱程度</label><input type="text" value={{item.degree}} id="degree"><label for="sheepdesc">角色描述</label><input type="text" value={{item.sheepdesc}} id="sheepdesc"><label for="weight">商品重量</label><input type="text" value={{item.weight}} id="weight"></li>{% endfor %}
</body>
</html>

最后如果有需要项目css的可以关注我的公众号大太阳花花公主,在后台回复sheep即可。

简单的Django项目相关推荐

  1. 如何在Linux上部署一个简单的Django项目

    参考文章:https://blog.csdn.net/a249900679/article/details/51527200 1.首先,在根目录底下建一个目录,存放python3.6.3版本,linu ...

  2. python创建django项目语句_简单了解Django项目应用创建过程

    创建应用前必须先进入虚拟环境 workon npy007 创建个文件夹 madir test cd test django-admin strartproject djdemo djdemo为项目名 ...

  3. 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三

    在1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一 基础上进行如下操作: 所有路由不能全部都在myDjango下的urls.py路由文件中, ...

  4. 1-2.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之二

    七.在项目下新建 templates 路径 在工程上,右键,添加templates目录 注意*: 此目录下即用来存放我们的html文件: 此目录一般是与app的主目录是平级的.当然也可以建立在app的 ...

  5. 1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一

    首先,安装python3.8和pycharm参考其他教程. 一.安装django 使用下面命令默认安装最新版的django pip install django 使用下面命令可以安装指定版本 pip ...

  6. Django项目配合sentry实现浅析

    Django项目日志配合sentry概述 本文环境python3.5.2,Django版本1.10.2 Django项目中日志配合sentry的实现 sentry是一个错误跟踪网站,可以收集获取运行中 ...

  7. Django项目日志概述

    Django项目日志概述 本文环境python3.5.2,Django版本1.10.2 Django项目中日志的实现 Django项目中使用的日志,使用了Python标准库中的logging模块进行实 ...

  8. Django项目test中的mock概述

    Django项目test中的mock概述 本文环境python3.5.2 test中的mock实现 接口示例代码如下: ...# 路由配置('^api/business_application/?$' ...

  9. 基于nginx和uWSGI在Ubuntu系统上部署Django项目

    1. nginx 1.1 安装 sudo apt-get install nginx 1.2启动.停止和重启 sudo /etc/init.d/nginx start sudo /etc/init.d ...

  10. 使用Pycharm创建一个Django项目

    本文为Django项目创建的简单介绍,更为详细的Django项目创建,编辑可以参考如下教程: IMOOC Django入门与实践-http://www.imooc.com/learn/790 Pych ...

最新文章

  1. ip classless作用
  2. 阿里的“扫地僧”,2年“抄”了20万页古籍
  3. 计算机组成原理考试知识点总结,最新2018计算机组成原理期末复习考试知识点复习考点归纳总结总结...
  4. WCF 第五章 并发和实例(服务行为)
  5. Vue2.x-01点击按钮弹出子Vue组件,遍历JSON展示数据
  6. c++ winpcap开发(10)
  7. 解决maven内存溢出
  8. Deformable-DETR的学习笔记
  9. 【JAVA笔记——道】Hibernate 线程本地化基础篇
  10. Java多线程学习笔记-线程的状态
  11. win10默认壁纸_小白个人系统安装美化(二)win10系统美化设置篇
  12. 线性代数第6章答案(仅供参考!!!)
  13. 计算机网络规划与设计
  14. snaker流程预览
  15. 什么是云备份,如何在教育行业正确使用云备份?
  16. Caused by: org.springframework.web.client.RestClientException: Error while extracting response for t
  17. Linux系统中常用命令行命令、快捷键、创建长路径的快捷键
  18. Magic Firewall 简介
  19. 基于MQ对登录系统核心流程进行异步化改造,提升系统性能-11
  20. 蓝桥杯——青蛙过河(JAVA)

热门文章

  1. 北理计算机2017,←2017 计算机学院 2019→
  2. 日期插件datepicker的使用
  3. 收费最低的云存储_营业收费系统|自来水管理系统|自来水公司收费管理系统|手机移动抄表|网上营业厅|短信服务平台...
  4. 世界主要国家地区英文名称,缩写代码
  5. Kindle电子书资源网站汇总
  6. android 代码混淆 反编译,Android的反编译和代码混淆
  7. DeskPins-让应用始终在最前面
  8. 地理图例大全整理初中
  9. ADAMS 脚本仿真
  10. java retainall_Java Set retainAll()用法及代码示例