def get(self,request,username): user =request.myuser #登录状态下可以直接取出用户名 settlement =int(request.GET['settlement_type']) #取查询字符串 if settlement ==0: #购物车 点的 确认订单 #获取地址(从购物车或者商品详情页都需要地址) address_list =self.get_address(user.id) #获取购物车中 勾选上的物品信息 carts_obj =CartView() skus_list =carts_obj.get_carts_lists(user.id) selected_carts =[s for s in skus_list if s['selected']==1] #购物车里选中的状态 #点了商品详情页中的理解购买确认订单 data ={} data['addresses'] = address_list data['sku_list'] =selected_carts return JsonResponse({'code':200,'data':data,'base_url':settings.PIC_URL}) else: pass
1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import include, url from django.contrib import admin from django.conf import settings from django.conf.urls.static import static from carts.views import CartView urlpatterns = [ url(r'^$', 'newsletter.views.home', name='home'), url(r'^contact/$', 'newsletter.views.contact', name='contact'), url(r'^about/$', 'ecommerce2.views.about', name='about'), url(r'^admin/', include(admin.site.urls)), url(r'^accounts/', include('registration.backends.simple.urls')), url(r'^products/', include('products.urls')), url(r'^categories/', include('products.url_categories')), url(r'^cart/$', CartView.as_view(), name='cart'), ] if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
from orders.views import( AddressSelectFormView, UserAdressCreateView, OrderList, OrderDetail ) from products import views urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^$', 'teams.views.home', name='home'), url(r'^form/','teams.views.form',name='form'), url(r'^accounts/', include('registration.urls')), url(r'^pro/', include('products.urls')), url(r'^categories/', include('products.urls_categories')), url(r'^cart/$',CartView.as_view(),name='cartt'), url(r'^cart/count/$',ItemCountView.as_view(),name='item_count'), url(r'^checkout/$',CheckoutView.as_view(),name='checkout'), url(r'^checkout/address/$', AddressSelectFormView.as_view(), name='order_address'), url(r'^checkout/address/add/$', UserAdressCreateView.as_view(), name='user_address_create'), url(r'^checkout/final/$', CheckoutFinalView.as_view(), name='checkout_final'), url(r'^orders/$', OrderList.as_view(), name='orders'), url(r'^orders/(?P<pk>\d+)/$', OrderDetail.as_view(), name='order_detail'), url(r'^change-language/$',views.change_language,name='change-language'), ] if settings.DEBUG : urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) urlpatterns += staticfiles_urlpatterns()
name='staff-order-update'), re_path(r'^orders/staff/customer/(?P<pk>\d+)/$', StaffCustomerDetailView.as_view(), name='staff-customer-detail'), re_path(r'^orders/(?P<pk>\d+)/$', OrderDetail.as_view(), name='order_detail'), re_path(r'^orders/(?P<pk>\d+)/generate-invoice/$', GeneratePDF.as_view(), name='order-generate-invoice'), re_path(r'^orders/(?P<pk>\d+)/check-in/$', OrderCheckinUpdateView.as_view(), name='order-generate-check-in'), re_path(r'^stripe-orders/', include("orders.urls", namespace='stripe-orders')), re_path(r'^cart/$', CartView.as_view(), name='cart'), re_path(r'^cart/pickup/$', CartPickupView.as_view(), name='cart-pickup'), re_path(r'^cart/pickup-time/create/$', pickuptime_create, name='cart-pickup-create'), re_path(r'^cart/time/$', CartTimeDisplayView.as_view(), name='cart_time'), re_path(r'^cart/count/$', ItemCountView.as_view(), name='item_count'), re_path(r'^cart/pickup-time/$', PickupTimeListView.as_view(), name='pickup_time_select'), re_path(r'^checkout/$', CheckoutView.as_view(), name='checkout'), re_path(r'^checkout/address/$', AddressSelectFormView.as_view(), name='order_address'), re_path(r'^checkout/address/add/$', UserAddressCreateView.as_view(),
"""discovery URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.urls import path, include from carts.views import CartView, Ordered, OrderView urlpatterns = [ path('products', include('products.urls')), path('order', OrderView.as_view()), path('cart', CartView.as_view()), path('ordered', Ordered.as_view()), path('users', include('users.urls')) ]
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^$', 'newsletter.views.home', name='home'), url(r'^contact/', 'newsletter.views.contact', name='contact'), url(r'^message_submitted/', 'newsletter.views.message_submitted', name='contact_us_submitted'), url(r'^sign-up-successful/', 'newsletter.views.sign_up_successful', name='sign_up_successful'), url(r'^accounts/', include('registration.backends.default.urls')), url(r'^products/', include('products.urls')), url(r'^categories/', include('products.urls_categories')), url(r'^orders/$', OrderList.as_view(), name="orders"), url(r'^cart/$', CartView.as_view(), name="cart"), url(r'^cart/count/$', ItemCountView.as_view(), name="item_count"), url(r'^checkout/$', CheckoutView.as_view(), name="checkout"), url(r'^checkout/address/$', AddressSelectFormView.as_view(), name="order_address"), url(r'^checkout/address/add/$', UserAddressCreateView.as_view(), name="user_address_create"), url(r'^checkout/final/$', CheckoutFinalView.as_view(), name="checkout_final"), # API URLS url(r'^api/auth/token/$', 'rest_framework_jwt.views.obtain_jwt_token'), url(r'^api/$', APIHomeView.as_view(), name="home_api"),
from django.conf.urls.static import static from home.views import home_view from signup.views import signup_view from products.views import ProductListView from carts.views import CartView from django.contrib.auth import views as auth_view urlpatterns = [ path('admin/', admin.site.urls), # product path('products/', include('products.urls')), path('', home_view, name='home_view'), # category path('categories/', include('products.urls_categories')), # Cart path('cart/', CartView.as_view(), name='cart'), # authentications path('signup/', signup_view, name='signup'), path('accounts/', include("django.contrib.auth.urls")), path('change_password', auth_view.PasswordChangeView.as_view( template_name='registration/password_change.html', success_url='/'), name='change_password'), path('reset_password', auth_view.PasswordResetView.as_view( template_name='registration/password_reset.html', success_url='accounts/login'), name='reset_password'), ] # media_url and static_url
from django.urls import path, include from rest_framework.routers import DefaultRouter from carts.views import CartView, CartItemViewSet cart_item_router = DefaultRouter() cart_item_router.register('', CartItemViewSet, basename='cart_item') item_patterns = cart_item_router.urls urlpatterns = [ path('', CartView.as_view()), path('items/', include(item_patterns)), ]
2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls)) """ from django.conf import settings from django.conf.urls import include, url from django.conf.urls.static import static from django.contrib import admin from carts.views import CartView,ItemCountView,CheckoutView,CheckoutFinalView from orders.views import AddressSelectFormView,UserAddressCreateView,OrderList,OrderDetail urlpatterns = [ url(r'^$','newsletter.views.home',name='home'), url(r'^contact/$','newsletter.views.contact',name='contact'), url(r'^about/$','ecommerce2.views.about',name='about'), url(r'^admin/', include(admin.site.urls)), url(r'^accounts/', include('registration.backends.default.urls')), url(r'^products/', include('products.urls')), url(r'^categories/', include('products.urls_categories')), url(r'^orders/$',OrderList.as_view(), name="orders"), url(r'^orders/(?P<pk>\d+)$',OrderDetail.as_view(), name="order_detail"), url(r'^cart/$',CartView.as_view(), name="cart"), url(r'^cart/count/$',ItemCountView.as_view(), name="item_count"), url(r'^checkout/$',CheckoutView.as_view(), name="checkout"), url(r'^checkout/address/$', AddressSelectFormView.as_view(), name="order_address"), url(r'^checkout/address/add/$', UserAddressCreateView.as_view(), name="user_address_create"), url(r'^checkout/final/$', CheckoutFinalView.as_view(), name="checkout_final"), ] if settings.DEBUG: urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
urlpatterns = [ url(r'^signup$', views.user_signup, name='user_signup'), url(r'^login$', views.user_signin, name='user_signin'), url(r'^logout$', logout, { 'template_name': 'users/signin.html', 'next_page': '/' }, name='signout'), url(r'^forgot-password$', views.forgot_password, name='forgot_password'), url(r'^reset-password$', views.reset_password, name='rest_password'), url(r'^', include('products.urls')), url(r'^account/', include('users.urls')), url(r'^staff/', include('djecommerce.staffurls')), url(r'^admin/', include('djecommerce.adminurls')), url(r'^cart$', CartView.as_view(), name='add-to-cart'), url(r'^cart/count$', CartCountView.as_view(), name='cart_count'), url(r'^checkout/shipping-address$', ShippingAddressSelectView.as_view(), name='shipping-order-address'), url(r'^checkout/billing-address$', BillingAddressSelectView.as_view(), name='billing-order-address'), url(r'^checkout/address/add$', OrderAddressCreateView.as_view(), name='order-address-add'), url(r'^checkout/address/edit/(?P<pk>\d+)$', OrderAddressUpdateView.as_view(), name='order-address-update'), url(r'^checkout$', CheckoutView.as_view(), name='checkout'), url(r'^checkout/final/$',
def post(self,request,username): #生成用户订单 user =request.myuser address_id =json.loads(request.body).get('address_id') #取地址 try: address =Address.objects.get(id =address_id,is_active=True) except Exception as e: return JsonResponse({'code':10500,'errmsg':'address error'}) #开启事物 乐观锁(MySQL 事务主要用于处理操作量大,复杂度高的数据。) with transaction.atomic(): #所有的sql将会包裹在一个事物里 sid = transaction.savepoint() #存档点 #时间戳 + 用户主键 (相对唯一性) now =datetime.datetime.now() order_id ="%s%02d" %(now.strftime('%Y%m%d%H%M%S'),user.id) #"%s%02d":不足两位左边补零 order =OrderInfo.objects.create( order_id =order_id, user_profile=user, address =address.address, receiver =address.receiver, receiver_mobile =address.receiver_mobile, tag =address.tag, total_amount=0, total_count=0, freight=0, pay_method=1, status=1, ) #取出购物车数据 carts_obj =CartView() all_carts =carts_obj.get_carts_all_data(user.id) #过滤出选中的商品 carts_data ={k:v for k,v in all_carts.items() if v[1]==1} skus = SKU.objects.filter(id__in =carts_data.keys()) total_count =0 total_amount =0 for sku in skus: carts_count =int(carts_data[sku.id][0]) if sku.stock <carts_count: #库存不够 #回滚 到最初始的位置 transaction.savepoint_rollback(sid) return JsonResponse({'code':10501,'errmsg':'stock error %s'%(sku.id)}) #修改库存&乐观锁 old_version =sku.version result =SKU.objects.filter(id =sku.id,version =old_version).update(stock =sku.stock - carts_count,sales =sku.sales + carts_count, version =old_version+1) if result ==0: #证明当前数据有变化 transaction.savepoint_rollback(sid) return JsonResponse({'code':10502,'errmsg':'库存有变化,请稍后再试'}) #创建订单商品数据 OrderGoods.objects.create( order_id =order_id, sku_id=sku.id, count =carts_count, price =sku.price ) #计算总数量和总金额 total_amount +=sku.price*carts_count total_count +=carts_count #更新订单数据 order.total_count =total_count order.total_amount =total_amount order.save() #提交事务 transaction.savepoint_commit(sid) #删除购物车中 勾选状态的商品 data ={ 'saler':'dashop11', 'total_amount':order.total_amount + order.freight, 'order_id':order_id, 'pay_url':'' } return JsonResponse({'code':200,'data':data})
from carts.views import CartView, ItemCountView, CheckOutView, CheckoutFinalView from orders.views import AddressSelectFormView, UserAddressCreateView, OrderList, OrderDetail urlpatterns = [ # Examples: url(r'^$', 'newsletter.views.home', name='home'), url(r'^contact/$', 'newsletter.views.contact', name='contact'), url(r'^about/$', 'ec2.views.about', name='about'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^accounts/', include('registration.backends.default.urls')), url(r'^products/', include('products.urls')), url(r'^category/', include('products.urls_category')), url(r'^orders/$', OrderList.as_view(), name='orders'), url(r'^orders/(?P<pk>\d+)/$', OrderDetail.as_view(), name='order_detail'), url(r'^carts/$', CartView.as_view(), name='carts'), url(r'^carts/count/$', ItemCountView.as_view(), name='item_count'), url(r'^checkout/$', CheckOutView.as_view(), name='checkout'), url(r'^checkout/address/$', AddressSelectFormView.as_view(), name='order_address'), url(r'^checkout/address/create/$', UserAddressCreateView.as_view(), name='user_create_address'), url(r'^checkout/final/$', CheckoutFinalView.as_view(), name='checkout_final'), ] if settings.DEBUG: urlpatterns += static(settings.STATIC_URL,
from django.conf.urls import url from carts.views import CartView, ItemCountView, CheckoutView urlpatterns = [ url(r'^$', CartView.as_view(), name='cart'), url(r'^count/', ItemCountView.as_view(), name='cart_count'), url(r'^checkout/', CheckoutView.as_view(), name='checkout'), ]
url(r'^dashboard/points/checkout/$', PointCheckoutAjaxView.as_view(), name='point_checkout'), url(r'^dashboard/points/validation/$', PointImpAjaxView.as_view(), name='point_validation'), url(r'^dashboard/point/charge/success$', charge_success, name='point_success'), url(r'^dashboard/point/charge/fail', charge_fail, name='point_fail'), url(r'^dashboard/points/history$', history_point, name='point_history'), url(r'^dashboard/purchase/(?P<cart_id>\d+)/$', purchase, name='purchase'), url(r'^dashboard/purchase/wishlist/$', WishListView.as_view(), name='wish_list'), url(r'^dashboard/purchase/cart/$', CartView.as_view(), name='cart'), url(r'^dashboard/purchase/checkout/$', CheckoutAjaxView.as_view(), name='checkout'), url(r'^dashboard/purchase/validation/$', ImpAjaxView.as_view(), name='validation'), url(r'^dashboard/purchase/list/$', purchase_list, name='purchase_list'), url(r'^dashboard/purchase/success/$', pay_success, name='pay_success'), url(r'^dashboard/purchase/fail/$', pay_fail, name='pay_fail'), url(r'^dashboard/seller/manage/$', product_manage, name='product_manage'), url(r'^dashboard/guide/$', TemplateView.as_view(template_name='account/dashboard_guide.html'), name='dashboard_guide'), url(r'^dashboard/question/$', TemplateView.as_view(template_name='account/dashboard_question.html'),