setting:
STATIC_URL = ‘/static/‘
STATICFILES_DIRS = (
os.path.join(BASE_DIR,‘static‘),
)
UPLOAD_ROOT = os.path.join(BASE_DIR,‘upload‘)
urls:
from django.contrib import admin
from django.urls import path,re_path
from django.views.static import serve
from lianxi7.settings import UPLOAD_ROOT
from mypro import views
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘‘, views.index),
path(‘show/<int:id_>‘, views.show),
path(‘add/‘, views.add),
path(‘upload_img/‘,views.upload_img),
re_path(‘^upload/(?P<path>.*)$‘,serve,{‘document_root‘:UPLOAD_ROOT}),
]
models:
from django.db import models
# Create your models here.
class Shopping(models.Model):
name = models.CharField(max_length=30,verbose_name=‘名称‘)
img = models.TextField(verbose_name=‘图片‘)
count = models.IntegerField(blank=True,null=True,verbose_name=‘人气值‘)
price = models.CharField(max_length=10)
创建自定义过滤器
文件夹 templatetags
创建文件mt_filter
from django import template
register = template.Library()
@register.filter
def my_str(val):
return str(val)+"牛大头"
views:
from django.shortcuts import render,redirect
from django.http import HttpResponse
from mypro.models import Shopping
import json
import os
import random #生成随机数模块
import hashlib
from lianxi7.settings import UPLOAD_ROOT
# Create your views here.
def upload_img(request):
if request.method == ‘POST‘:
img = request.FILES.get(‘file‘)
if img:
with open(os.path.join(UPLOAD_ROOT,img.name), ‘wb‘) as fp:
for buf in img.chunks():
fp.write(buf)
# 迭代读取文件并写入到本地
response = {}
response[‘path‘] = ‘/upload/‘ + img.name
response[‘error‘] = False
return HttpResponse(json.dumps(response))
def add(request):
if request.method == ‘GET‘:
article = Shopping.objects.all().last()
return render(request,‘add.html‘,locals())
if request.method == ‘POST‘:
name = request.POST.get(‘name‘)
price = request.POST.get(‘price‘)
img = request.POST.get(‘img‘)
# 1-100的随机整数
count = random.randint(1,100)
print(count)
Shopping.objects.create(
name = name,
price = price,
img = img,
count=count
)
return redirect(‘/add/‘)
def index(request):
if request.method == ‘GET‘:
shopping = Shopping.objects.all()
money = 1
popular = 1
return render(request,‘index.html‘,locals())
if request.method == ‘POST‘:
popular = request.POST.get(‘popular‘)
money = request.POST.get(‘money‘)
if money:
if money == ‘0‘:
shopping = Shopping.objects.all().order_by(‘price‘)
money = ‘1‘
popular = ‘1‘
return render(request, ‘index.html‘, locals())
elif money == ‘1‘:
shopping = Shopping.objects.all().order_by(‘-price‘)
money = ‘0‘
popular = ‘1‘
return render(request, ‘index.html‘, locals())
if popular:
if popular == ‘0‘:
shopping = Shopping.objects.all().order_by(‘count‘)
popular = ‘1‘
money = ‘1‘
return render(request, ‘index.html‘, locals())
elif popular == ‘1‘:
shopping = Shopping.objects.all().order_by(‘-count‘)
popular = ‘0‘
money = ‘1‘
return render(request, ‘index.html‘, locals())
def show(request,id_):
shopping = Shopping.objects.filter(pk=id_).first()
return render(request,‘show.html‘,locals())
html:
add:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="../static/jquery-1.12.4.min.js"></script>
<script src="../static/tinymce/js/tinymce/tinymce.min.js"></script>
<script src="../static/tinymce_setup.js"></script>
</head>
<body>
<form method="POST" action=‘‘ enctype="multipart/form-data">
<input type="text" placeholder="名称" name="name">
<br>
<input type="text" placeholder="价格" name="price">
<br>
<input id="rich_content" name="img" value="">
<br>
<button type="submit">提交</button>
</form>
{% if article %}
<h3>{{ article.title }}</h3>
<h4>{{ article.author }}</h4>
{# safe过滤器,识别标签 #}
<div>{{ article.content|safe }}</div>
{% endif %}
</body>
</html>
index:
<!DOCTYPE html>
{% load my_filter %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<form action="" method="post">
<table border="2" cellspacing="0">
<tr>
<td><button type="submit" name="money" value="{{ money }}">牛大头</button></td>
<td><button type="submit" name="popular" value="{{ popular }}"a>人气值</button></td>
</tr>
<tr>
<td>编号</td>
<td>商品名称</td>
<td>商品价格</td>
<td>人气值</td>
<td>详情</td>
</tr>
{% for foo in shopping %}
<tr>
<td>{{ forloop.counter0 }}</td>
<td><a href="show/{{ foo.id }}">{{ foo.name }}</a></td>
<td>{{ foo.price | my_str}}</td>
<td>{{ foo.count }}</td>
<td>{{ foo.img | safe }}</td>
</tr>
{% endfor %}
</table>
</form>
</body>
</html>
show:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>详情</title>
</head>
<body>
{{ shopping.name }}
{{ shopping.price }}
{{ shopping.img | safe }}
<a href="/">首页</a>
</body>
</html>
原文地址:https://www.cnblogs.com/lhrd/p/10914254.html