Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_Web_Project
Django_Fresh_Ecommerce
提交
1d9b5839
D
Django_Fresh_Ecommerce
项目概览
Python_Web_Project
/
Django_Fresh_Ecommerce
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Django_Fresh_Ecommerce
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1d9b5839
编写于
7月 29, 2020
作者:
C
Corley
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
V1.5
上级
fdafa4bf
变更
30
隐藏空白更改
内联
并排
Showing
30 changed file
with
114 addition
and
14 deletion
+114
-14
Fresh_Ecommerce/__pycache__/settings.cpython-38.pyc
Fresh_Ecommerce/__pycache__/settings.cpython-38.pyc
+0
-0
Fresh_Ecommerce/__pycache__/urls.cpython-38.pyc
Fresh_Ecommerce/__pycache__/urls.cpython-38.pyc
+0
-0
Fresh_Ecommerce/settings.py
Fresh_Ecommerce/settings.py
+0
-1
Fresh_Ecommerce/urls.py
Fresh_Ecommerce/urls.py
+4
-0
README.md
README.md
+4
-1
apps/goods/__pycache__/filters.cpython-38.pyc
apps/goods/__pycache__/filters.cpython-38.pyc
+0
-0
apps/goods/__pycache__/models.cpython-38.pyc
apps/goods/__pycache__/models.cpython-38.pyc
+0
-0
apps/goods/__pycache__/serializers.cpython-38.pyc
apps/goods/__pycache__/serializers.cpython-38.pyc
+0
-0
apps/goods/__pycache__/views.cpython-38.pyc
apps/goods/__pycache__/views.cpython-38.pyc
+0
-0
apps/goods/filters.py
apps/goods/filters.py
+1
-1
apps/goods/migrations/0008_auto_20200729_1112.py
apps/goods/migrations/0008_auto_20200729_1112.py
+19
-0
apps/goods/migrations/__pycache__/0008_auto_20200729_1112.cpython-38.pyc
...ations/__pycache__/0008_auto_20200729_1112.cpython-38.pyc
+0
-0
apps/goods/models.py
apps/goods/models.py
+1
-1
apps/goods/serializers.py
apps/goods/serializers.py
+8
-1
apps/goods/views.py
apps/goods/views.py
+1
-1
apps/user_operation/__pycache__/models.cpython-38.pyc
apps/user_operation/__pycache__/models.cpython-38.pyc
+0
-0
apps/user_operation/__pycache__/serializers.cpython-38.pyc
apps/user_operation/__pycache__/serializers.cpython-38.pyc
+0
-0
apps/user_operation/__pycache__/views.cpython-38.pyc
apps/user_operation/__pycache__/views.cpython-38.pyc
+0
-0
apps/user_operation/migrations/0004_auto_20200729_1735.py
apps/user_operation/migrations/0004_auto_20200729_1735.py
+20
-0
apps/user_operation/migrations/__pycache__/0004_auto_20200729_1735.cpython-38.pyc
...ations/__pycache__/0004_auto_20200729_1735.cpython-38.pyc
+0
-0
apps/user_operation/models.py
apps/user_operation/models.py
+3
-1
apps/user_operation/serializers.py
apps/user_operation/serializers.py
+19
-0
apps/user_operation/views.py
apps/user_operation/views.py
+18
-1
apps/users/__pycache__/serializers.cpython-38.pyc
apps/users/__pycache__/serializers.cpython-38.pyc
+0
-0
apps/users/__pycache__/views.cpython-38.pyc
apps/users/__pycache__/views.cpython-38.pyc
+0
-0
apps/users/serializers.py
apps/users/serializers.py
+1
-1
apps/users/views.py
apps/users/views.py
+1
-1
apps/utils/__pycache__/permissions.cpython-38.pyc
apps/utils/__pycache__/permissions.cpython-38.pyc
+0
-0
apps/utils/permissions.py
apps/utils/permissions.py
+10
-0
fresh_online/src/api/api.js
fresh_online/src/api/api.js
+4
-4
未找到文件。
Fresh_Ecommerce/__pycache__/settings.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
Fresh_Ecommerce/__pycache__/urls.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
Fresh_Ecommerce/settings.py
浏览文件 @
1d9b5839
...
...
@@ -146,7 +146,6 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
REST_FRAMEWORK
=
{
'DEFAULT_FILTER_BACKENDS'
:
[
'django_filters.rest_framework.DjangoFilterBackend'
],
'DEFAULT_AUTHENTICATION_CLASSES'
:
[
'rest_framework_jwt.authentication.JSONWebTokenAuthentication'
,
'rest_framework.authentication.BasicAuthentication'
,
'rest_framework.authentication.SessionAuthentication'
,
]
...
...
Fresh_Ecommerce/urls.py
浏览文件 @
1d9b5839
...
...
@@ -25,6 +25,7 @@ import xadmin
from
.settings
import
MEDIA_ROOT
from
goods.views
import
GoodsListViewSet
,
CategoryViewSet
from
users.views
import
SmsCodeViewSet
,
UserViewSet
from
user_operation.views
import
UserFavViewSet
# Create a router and register our viewsets with it.
...
...
@@ -42,6 +43,9 @@ router.register(r'codes', SmsCodeViewSet, basename='codes')
# 配置注册路由
router
.
register
(
r
'users'
,
UserViewSet
,
basename
=
'users'
)
# 配置收藏路由
router
.
register
(
r
'userfavs'
,
UserFavViewSet
,
basename
=
'userfavs'
)
urlpatterns
=
[
url
(
r
'^xadmin/'
,
xadmin
.
site
.
urls
),
url
(
r
'^media/(?P<path>.*)$'
,
serve
,
{
'document_root'
:
MEDIA_ROOT
}),
...
...
README.md
浏览文件 @
1d9b5839
...
...
@@ -16,4 +16,7 @@
先通过嵌套方式实现商品类别数据接口,再通过Vue展示商品分类,最后实现展示商品列表页数据和搜索功能。
#### V1.4
先实现在DRF中使用token,再使用JSON Web Token登录,再实现短信发送和注册功能,最后实现前后端结合、完成注册功能。
\ No newline at end of file
先实现在DRF中使用token,再使用JSON Web Token登录,再实现短信发送和注册功能,最后实现前后端结合、完成注册功能。
#### V1.5
主要实商品详情页功能,包括商品轮播图、商品信息等,还包括热卖商品的展示和收藏功能的实现。
\ No newline at end of file
apps/goods/__pycache__/filters.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/goods/__pycache__/models.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/goods/__pycache__/serializers.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/goods/__pycache__/views.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/goods/filters.py
浏览文件 @
1d9b5839
...
...
@@ -16,4 +16,4 @@ class GoodsFilter(django_filters.rest_framework.FilterSet):
class
Meta
:
model
=
Goods
fields
=
[
'name'
,
'pricemin'
,
'pricemax'
]
\ No newline at end of file
fields
=
[
'name'
,
'pricemin'
,
'pricemax'
,
'is_hot'
]
\ No newline at end of file
apps/goods/migrations/0008_auto_20200729_1112.py
0 → 100644
浏览文件 @
1d9b5839
# Generated by Django 3.0.8 on 2020-07-29 11:12
from
django.db
import
migrations
,
models
import
django.db.models.deletion
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'goods'
,
'0007_auto_20200725_0954'
),
]
operations
=
[
migrations
.
AlterField
(
model_name
=
'goodsimage'
,
name
=
'goods'
,
field
=
models
.
ForeignKey
(
null
=
True
,
on_delete
=
django
.
db
.
models
.
deletion
.
SET_NULL
,
related_name
=
'images'
,
to
=
'goods.Goods'
,
verbose_name
=
'商品'
),
),
]
apps/goods/migrations/__pycache__/0008_auto_20200729_1112.cpython-38.pyc
0 → 100644
浏览文件 @
1d9b5839
文件已添加
apps/goods/models.py
浏览文件 @
1d9b5839
...
...
@@ -77,7 +77,7 @@ class Goods(models.Model):
class
GoodsImage
(
models
.
Model
):
'''商品轮播图'''
goods
=
models
.
ForeignKey
(
Goods
,
verbose_name
=
'
'
,
related_name
=
'商品
'
,
null
=
True
,
on_delete
=
models
.
SET_NULL
)
goods
=
models
.
ForeignKey
(
Goods
,
verbose_name
=
'
商品'
,
related_name
=
'images
'
,
null
=
True
,
on_delete
=
models
.
SET_NULL
)
image
=
models
.
ImageField
(
upload_to
=
''
,
null
=
True
,
blank
=
True
,
verbose_name
=
'图片'
)
image_url
=
models
.
CharField
(
max_length
=
300
,
null
=
True
,
blank
=
True
,
verbose_name
=
'图片链接'
)
...
...
apps/goods/serializers.py
浏览文件 @
1d9b5839
from
rest_framework
import
serializers
from
.models
import
Goods
,
GoodsCategory
from
.models
import
Goods
,
GoodsCategory
,
GoodsImage
class
TerCategorySerializer
(
serializers
.
ModelSerializer
):
...
...
@@ -29,9 +29,16 @@ class CategorySerializer(serializers.ModelSerializer):
fields
=
'__all__'
class
GoodsImageSerializer
(
serializers
.
ModelSerializer
):
class
Meta
:
model
=
GoodsImage
fields
=
[
'image'
,]
class
GoodsSerializer
(
serializers
.
ModelSerializer
):
'''商品序列化'''
category
=
CategorySerializer
()
images
=
GoodsImageSerializer
(
many
=
True
)
class
Meta
:
model
=
Goods
fields
=
'__all__'
\ No newline at end of file
apps/goods/views.py
浏览文件 @
1d9b5839
...
...
@@ -14,7 +14,7 @@ class GoodsPagination(PageNumberPagination):
page_size_query_param
=
'page_size'
max_page_size
=
100
class
GoodsListViewSet
(
mixins
.
ListModelMixin
,
viewsets
.
GenericViewSet
):
class
GoodsListViewSet
(
mixins
.
ListModelMixin
,
mixins
.
RetrieveModelMixin
,
viewsets
.
GenericViewSet
):
'''商品列表页,并实现分页、搜索、过滤、排序'''
queryset
=
Goods
.
objects
.
filter
(
is_delete
=
False
).
order_by
(
'id'
)
...
...
apps/user_operation/__pycache__/models.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/user_operation/__pycache__/serializers.cpython-38.pyc
0 → 100644
浏览文件 @
1d9b5839
文件已添加
apps/user_operation/__pycache__/views.cpython-38.pyc
0 → 100644
浏览文件 @
1d9b5839
文件已添加
apps/user_operation/migrations/0004_auto_20200729_1735.py
0 → 100644
浏览文件 @
1d9b5839
# Generated by Django 3.0.8 on 2020-07-29 17:35
from
django.conf
import
settings
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
migrations
.
swappable_dependency
(
settings
.
AUTH_USER_MODEL
),
(
'goods'
,
'0008_auto_20200729_1112'
),
(
'user_operation'
,
'0003_auto_20200725_0954'
),
]
operations
=
[
migrations
.
AlterUniqueTogether
(
name
=
'userfav'
,
unique_together
=
{(
'user'
,
'goods'
)},
),
]
apps/user_operation/migrations/__pycache__/0004_auto_20200729_1735.cpython-38.pyc
0 → 100644
浏览文件 @
1d9b5839
文件已添加
apps/user_operation/models.py
浏览文件 @
1d9b5839
...
...
@@ -21,9 +21,11 @@ class UserFav(models.Model):
class
Meta
:
verbose_name
=
'用户收藏'
verbose_name_plural
=
verbose_name
# 联合唯一验证
unique_together
=
(
'user'
,
'goods'
)
def
__str__
(
self
):
return
self
.
user
.
name
return
self
.
user
.
user
name
class
UserLeavingMessage
(
models
.
Model
):
...
...
apps/user_operation/serializers.py
0 → 100644
浏览文件 @
1d9b5839
from
rest_framework
import
serializers
from
rest_framework.validators
import
UniqueTogetherValidator
from
.models
import
UserFav
class
UserFavSerializer
(
serializers
.
ModelSerializer
):
user
=
serializers
.
HiddenField
(
default
=
serializers
.
CurrentUserDefault
())
class
Meta
:
model
=
UserFav
fields
=
[
'id'
,
'user'
,
'goods'
]
validators
=
[
UniqueTogetherValidator
(
queryset
=
UserFav
.
objects
.
filter
(
is_delete
=
False
),
fields
=
[
'user'
,
'goods'
],
message
=
'请勿重复收藏'
)
]
\ No newline at end of file
apps/user_operation/views.py
浏览文件 @
1d9b5839
from
django.shortcuts
import
render
from
rest_framework
import
viewsets
,
mixins
from
rest_framework.permissions
import
IsAuthenticated
from
rest_framework.authentication
import
SessionAuthentication
from
rest_framework_jwt.authentication
import
JSONWebTokenAuthentication
from
.models
import
UserFav
from
.serializers
import
UserFavSerializer
from
utils.permissions
import
IsOwnerOrReadOnly
# Create your views here.
class
UserFavViewSet
(
mixins
.
CreateModelMixin
,
mixins
.
ListModelMixin
,
mixins
.
DestroyModelMixin
,
viewsets
.
GenericViewSet
):
'''用户收藏'''
permission_classes
=
[
IsAuthenticated
,
IsOwnerOrReadOnly
]
serializer_class
=
UserFavSerializer
authentication_classes
=
[
JSONWebTokenAuthentication
,
SessionAuthentication
]
lookup_field
=
'goods_id'
def
get_queryset
(
self
):
return
UserFav
.
objects
.
filter
(
user
=
self
.
request
.
user
,
is_delete
=
False
)
\ No newline at end of file
apps/users/__pycache__/serializers.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/users/__pycache__/views.cpython-38.pyc
浏览文件 @
1d9b5839
无法预览此类型文件
apps/users/serializers.py
浏览文件 @
1d9b5839
...
...
@@ -37,7 +37,7 @@ class SmsSerializer(serializers.Serializer):
class
UserRegSerializer
(
serializers
.
ModelSerializer
):
'''用户序列化'''
code
=
serializers
.
CharField
(
max_length
=
4
,
min_length
=
4
,
label
=
'验证码'
,
write_only
=
True
,
code
=
serializers
.
CharField
(
required
=
True
,
max_length
=
4
,
min_length
=
4
,
label
=
'验证码'
,
write_only
=
True
,
help_text
=
'验证码'
,
error_messages
=
{
'required'
:
'请输入验证码'
,
...
...
apps/users/views.py
浏览文件 @
1d9b5839
...
...
@@ -80,7 +80,7 @@ class UserViewSet(CreateModelMixin, viewsets.GenericViewSet):
payload
=
jwt_payload_handler
(
user
)
re_dict
[
'token'
]
=
jwt_encode_handler
(
payload
)
re_dict
[
'name'
]
=
user
.
name
if
user
.
name
else
user
.
username
headers
=
self
.
get_success_headers
(
serializer
.
data
)
headers
=
self
.
get_success_headers
(
re_dict
)
return
Response
(
re_dict
,
status
=
status
.
HTTP_201_CREATED
,
headers
=
headers
)
def
perform_create
(
self
,
serializer
):
...
...
apps/utils/__pycache__/permissions.cpython-38.pyc
0 → 100644
浏览文件 @
1d9b5839
文件已添加
apps/utils/permissions.py
0 → 100644
浏览文件 @
1d9b5839
from
rest_framework
import
permissions
class
IsOwnerOrReadOnly
(
permissions
.
BasePermission
):
'''对象级别的权限,仅允许对象的所有者对其进行编辑'''
def
has_object_permission
(
self
,
request
,
view
,
obj
):
if
request
.
method
in
permissions
.
SAFE_METHODS
:
return
True
return
obj
.
user
==
request
.
user
\ No newline at end of file
fresh_online/src/api/api.js
浏览文件 @
1d9b5839
...
...
@@ -31,7 +31,7 @@ export const getHotSearch = params => { return axios.get(`${host}/hotsearchs/`)
export
const
getGoods
=
params
=>
{
return
axios
.
get
(
`
${
local_host
}
/goods/`
,
{
params
:
params
})
}
//商品详情
export
const
getGoodsDetail
=
goodId
=>
{
return
axios
.
get
(
`
${
host
}
/goods/
${
goodId
}
`
+
'
/
'
)
}
export
const
getGoodsDetail
=
goodId
=>
{
return
axios
.
get
(
`
${
local_
host
}
/goods/
${
goodId
}
`
+
'
/
'
)
}
//获取购物车商品
export
const
getShopCarts
=
params
=>
{
return
axios
.
get
(
`
${
host
}
/shopcarts/`
)
}
...
...
@@ -43,15 +43,15 @@ export const updateShopCart = (goodsId, params) => { return axios.patch(`${host}
export
const
deleteShopCart
=
goodsId
=>
{
return
axios
.
delete
(
`
${
host
}
/shopcarts/`
+
goodsId
+
'
/
'
)
}
//收藏
export
const
addFav
=
params
=>
{
return
axios
.
post
(
`
${
host
}
/userfavs/`
,
params
)
}
export
const
addFav
=
params
=>
{
return
axios
.
post
(
`
${
local_
host
}
/userfavs/`
,
params
)
}
//取消收藏
export
const
delFav
=
goodsId
=>
{
return
axios
.
delete
(
`
${
host
}
/userfavs/`
+
goodsId
+
'
/
'
)
}
export
const
delFav
=
goodsId
=>
{
return
axios
.
delete
(
`
${
local_
host
}
/userfavs/`
+
goodsId
+
'
/
'
)
}
export
const
getAllFavs
=
()
=>
{
return
axios
.
get
(
`
${
host
}
/userfavs/`
)
}
//判断是否收藏
export
const
getFav
=
goodsId
=>
{
return
axios
.
get
(
`
${
host
}
/userfavs/`
+
goodsId
+
'
/
'
)
}
export
const
getFav
=
goodsId
=>
{
return
axios
.
get
(
`
${
local_
host
}
/userfavs/`
+
goodsId
+
'
/
'
)
}
//登录
export
const
login
=
params
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录