Django项目部分笔记上传(未修改完)
pip install virtualenv 安装虚拟环境 pip install virtualenv
pip install virtualenvwrapper-win 安装virtualenv的扩展管理包,用于更方便的管理虚拟环境
mkvirtualenv 虚拟环境名称 创建虚拟目录
workon 虚拟目录名称/workon 查看全部的虚拟目录 进入虚拟目录,(只写workon就是查看全部虚拟目录)
deactivate 退出虚拟目录
pip install Django==1.11.3 安装及运行Django环境
pip uninstall Django 卸载Django
django-admin startproject 项目名称 创建项目
django-admin startapp 应用名称 创建应用
python manage.py runserver (切换对应的磁盘目录) 运行python
{% static ‘文件地址’ %} 11
{% load static %} 15
{% include ‘文件地址’%} 13
{% block 自定义名称 %}{% endblock %} 12
{% extends “文件地址” %} 14
from datetime import datetime
from .models import MyBlog
from django.http import HttpResponse
项目过程:
一、
1.运行django环境
python manage.py runserver
manage.py: Django项目里的工具,通过它可以调用django shell和数据库
AttributeError:属性错误
1.改setting
2.匹配urls.py的路由,引入应用users内
from django.conf.urls import url,include
urlpatterns = [url(r’^myblog/’,include(‘users.urls’))]
3.匹配user内部的urls.py的路由,访问视图的hello函数
from . import views
urlpatterns = [url(r’^users/’,views.hello),]
4.view的响应hello函数
from django.http import HttpResponse
def hello(request):
return HttpResponse(‘可以啦’)
templates:模板文件夹
static : 静态文件夹
return render(request,‘1.html’)
加载静态文件
{% load static %} //先加载
<link rel=‘stylesheet’ href=’{% static ‘1.css’ %}’> //再引用
setting.py 如何查找静态文件
STATICFILES_DIRS = (
os.path.join(BASE_DIR,‘static’),
)
models.py
class MyBlog(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
content = models.TextField()
add_time = models.DateTimeField()
数据迁移命令:python manage.py makemigrations
查看生成的文件本质:python manage.py sqlmigrate myblog 0001
真正生产数据库文件:python manage.py migrate
views.py
def tjdo(request):
title = request.POST[‘title’]
author = request.POST[‘author’]
content = request.POST[‘content’]
add_time = datetime.now()
result = MyBlog.objects.create(title=title,author=author,content=content,add_time=add_time)
if result:
return HttpResponse(add_time)
else:
return HttpResponse(‘添加失败’)
{% csrf_token %}#}
{‘a’:list}
循环{%for item in list%}
{{item.id}}
{{item.add_time}}
{%endfor%}
href="{% url ‘delete’ item.id %}"跳转方法{%url ‘名字’%}
创建MyBlog
排序MyBlog
获取id为1的信息 MyBlog.objects.get(pk=1) pk:primarykey主键
修改的逻辑代码:result = MyBlog.objects.filter(pk=id).update(title=title,author=author,content=content)
return render(request,‘blog/edit.html’,{‘list’:list}) 返回模板html
商城
myshop/users
database:myshop
后台模板
manager应用 manager/main
goodes应用 goods/goods_list GoodsInfo表(goods_name100,原价goods_price(float),现价goods_xprice,库存goods_count(int 默认0),商品介绍goods_info200,缩略图goods_pic(ImageField(default=’’,upload_to=‘media/uploads’)),存储方法goods_method50,配送地址goods_address200,内容详情goods_content(text))
goods_add
登录、验证等最后加
render:找templates中视图 渲染视图 request,‘goods/goods_list.html’
rediect: 地址localhost:8000/goods/goods_list
python manage.py startapp manager :创建一个叫manager应用
python manage.py startapp goods :创建一个叫goods应用
pip install pillow :安装pillow,建表时才能使用ImageField类型字段
url(r’^manager/’,include(‘manager.urls’,namespace=‘manager’)
href=’{% url ‘manage:good_list’ %}’
{%empty%}
goods_name=request.POST[‘goods_name’] 没传上会报错
goods_name=request.POST.get(‘goods_name’) 没传上不会报错
goods_pic=request.FILES.get(‘goods_pic’) 接图片文件
ajax:
from django.views.decorators.csrf import csrf example?
@csrf_exempt
href=‘javascript:;’
layer:
layer.confirm(‘看好了没’,function(e){
$.post(’{% url ‘goods:delete’%}’,{‘id’:id},function(res){
})
layer.close(e)
})
layer.alert('删除成功',{icon:1},function(index){
layer.close(index)
})
登录模块
登录表ManagerMessage
用户名:username varchar30 default=空
密码: userpass varchar30 default=空
昵称:nicheng varchar30,允许为空,default=卖家昵称
店铺名:shop_name varchar50,允许为空,default=店铺名
店铺logo:shop_logo Image50,允许为空,upload_to=
店铺地址:shop_address varchar100,允许为空
全局变量,存储在session cookie中
Session存储在服务器中(安全,多了会对服务器造成负担)
Cookie 存储在浏览器中(不够安全)
1.创建全局变量
request.session[‘username’] = username
{{ request.session.username }}
2.销毁全局变量
del request.session[‘username’]
获取当前时间{% now ‘Y-m-d H:i:s’ %}
创建表连接
商品外键:
from .model from
Manage = models.ForeignKey(ManagerMessage,default=’’,db_column=’manage_id’)数据库列名
Type_name = varchar30
Type_sort=integerfield,default=0
type = models.ForeignKey()
class GoodType
type_id=models.AutoField(auto_created=True,primary_key=True,default=0,db_colum=’type_id’)
支持原生的sql语句
GoodsInfo.objects.raw()
查询所有
GoodType.object.all()
下拉<select
Setting
MEDIA_ROOT = os.path.join(BASE_DIR,’static’) :把media放进static中
<img src = ‘{%static item.goods_pic%}’>
判断{% ifequal goods.type_id item.type_id %}
{% else %}
{% endifequal %}
问题setting两处
Goods/views update
二、
Def goods_type
Openstore
Openstoredo
goods_pic = request.POST[‘goods_pic’],
当用request.POST.get(‘goods_pic’)时,编辑时无法写入文件
附加功能:
开新店的昵称密码判断
管理员修改密码