1. 程式人生 > >Django專案部分筆記上傳(未修改完)

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’)時,編輯時無法寫入檔案

附加功能:
開新店的暱稱密碼判斷
管理員修改密碼