Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

2016-10-01から1ヶ月間の記事一覧

Django e-commerce part72 Braintree & Customer ID

Braintree の設定方法 Braintree sandboxに登録 2016年10月現在では、braintreeは日本に対応していないため、とりあえずsandboxで試してみる。 Braintreeをinstall pip install braintree pip freeze > requirements.txt settings/local.py にBratintr…

Django e-commerce part71 Order Detail

Order Detail Viewを、class based viewで作成 orders/views.py に OrderDetail viewを作成 from django.views.generic.detail import DetailView ... class OrderDetail(DetailView): model = Order ... urls.py を設定する。 url(r'^orders/(?P<pk>\d+)/$', Or</pk>…

Django e-commerce part70 Login Required Mixin

Login Required Mixinを作成する orders/mixins.py に追記する。 from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class LoginRequiredMixin(object): @method_decorator(login_required)…

Django e-commerce part69 Order List

Order List Viewを作成する Generic display views | Django documentation | Django orders/views.py に、class OrderListView を追記する。 from django.views.generic.list import ListView class OrderList(ListView): queryset = Order.objects.all() d…

Django e-commerce part68 Order Status

Order Statusを追加する orders/models.py を追記する ORDER_STATUS_CHOICES = ( ('created', 'Created'), ('completed','Completed'), ) class Order(models.Model): status = models.CharField(max_length=120, choices=ORDER_STATUS_CHOICES, default='cr…

Django e-commerce part67 Checkout Finalize View

注文を確定するviewの作成 carts/views.py にcheckoutfinalview classを追記する。 class CheckoutFinalView(View): def post(self, request, *args, **kwargs): return redirect("checkout") def get(self, request, *args, **kwargs): return redirect("ch…

Django e-commerce part66 Custom Mixin for Cart & order

Cart,OrderのMixinの作成 carts/views.py MixinViewを追加する。 CheckoutViewのget_orderと、get_objectを新しく作成したCartOrderMixinにコピペしてみる。(get_object()は、get_cartに名前を変えてある) class CartOrderMixin(object): def get_order(se…

CSSを設定して、Bootstrapのbtnの角のまるっぽさを小さくする

.btn{ border-radius:○px; } で数字が小さいほど、丸っぽさは取れていく。

Django e-commerce part65 Crafting the Order Part 4

Orderのアプリを完成させる 現時点では、ゲストとしてメールアドレスを入力すると、同じページにredirectされるようになっているため、この辺りを編集していく。 carts/views.py のCheckoutViewのget_context_data を修正する。 class CheckoutView(FormMixi…

Django e-commerce part63 Crafting the Order Part 3

Order内容の修正 現状では、ゲストユーザーが買い物を続けようとすると、anonymous userは認証できないという画面が出てきてしまう。それを修正する。 errorの原因は、AddressSelectFormViewの、get_form()の箇所だと思われる。 orders/views.py に追記する…

Django e-commerce part62 Crafting the Order Part 2

Order アプリの作成 part2 carts/checkout_views.htmlの編集 {% extends "base.html" %} {% load i18n %} {% load crispy_forms_tags %} {% block content %} {% if not user_can_continue %} ... {% else %} <p class='lead'> あなたのご注文内容 </p> <table class='table'> <tr>Tax: {{order.cart.tax_t</tr></table>…

Django e-commerce part61 Crafting the order Part 1

order 処理を完成させる orders/models.py のOrderを修正する。 from django.db.models.signals import pre_save class Order(models.Model): ... def order_pre_save(sender, instance, *args, **kwargs): shipping_total_price = instance.shipping_total_…

Django e-commerce part60 Order Model

OrderのModelを整えていく orders/views.pyを少し修正する class AddressSelectFormView(FormView): ... def form_valid(self, form, *args, **kwargs): print (form.cleaned_data["billing_address"]) print (form.cleaned_data["shipping_address"]) retur…

Django e-commerce part60 Model Choice Field

Model Choice Fieldを利用してみる 公式ドキュメント: Form fields | Django documentation | Django orders/froms.py のAddressFormに追記してみる。 from .models import UserAddress ... class AddressForm(forms.Form): billing_address = forms.ModelC…

Django e-commerce part59 UserAddress View

UserAddressのViewを作成する orders/views.py を編集する。 Generic editing views | Django documentation | Django 今回は、フォームビューを使ってみる。 from django.shortcuts import render from django.views.generic.edit import FormView from .fo…

Django e-commerce part58 UserAddress Model

ユーザーの配送先住所 carts/views.py のget_context_dataを編集する。 もし、認証済みのuserだった場合は、session[user_checkout_id] を、そのuserのuser_checkout.idに書き換える。これにより、checkout のインスタンスは、そのユーザーuniqueなものとし…

Django e-commerce part57 Save Guest Info

ゲストユーザの情報をsaveする carts/view.py 2、orders/models.py UserCheckoutをimportする。 post メソッドに、formでゲットしたemailと、UserCheckoutで、createしたuserを、user_checkoutとして、代入する。これで、usercheckoutに、インスタンスが保…

Django e-commerce part56 Checkout Form & Form mixin

チェックアウトフォームと、フォームのmixinを作成する order/forms.py を作成 from django import forms class GuestCheckoutForm(forms.Form): email = forms.EmailField() email2 = forms.EmailField(label='確認用') def clean_email(self): email = sel…

Django e-commerce part55 Order App

Order Appを作成する orderappを作成して、models.pyを作成する from django.conf import settings from django.db import models # Create your models here. class UserCheckout(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, nu…

Django e-commerce part53 Checkout View

CheckoutView carts/views.py views.py にCheckout Viewを作成する。DetailViewを継承して、class based viewを作成する。 class CheckoutView(DetailView): model = Cart template_name = "carts/checkout_view.html" carts/views.py に追記 class Checkout…

Django e-commerce part53 Cart Total & Taxes

カートにトータルと消費税をつける carts/models.py にフィールド追加 tax_total, totalを追記しておく do_tax_and_total_receiver には、subtotalなどの計算式を入れておく pre_save signalで、Cartからpre_save signalが来たらdo_tax_and_total_receiverに…

Django e-commerce part52 Cart Count in Navbar

Navbarのカートアイコンに数字を入れる。 navbar.html にcartのurlを追記する。 <ul class="nav navbar-nav navbar-right"> <li> <a href='{% url 'cart' %}'><i class="fa fa-shopping-cart fa-navbar-cart" aria-hidden="true"></i><span class='badge'>0</span></a> </li> navbar.html のbadgeの箇所にidを挿入する。(jquery用) </ul>

Django e-commerce part51 Empty Cart

カートが空の時の動作を設定する 現時点では、post_saveしか使っていなため、post_deleteを使ってみる。 post_delete ... from django.db.models.signals import pre_save, post_save, post_delete ... def cart_item_post_save_receiver(sender, instance, …

Django e-commerce part50 Display Message from Server

動作によって、メッセージを変更する carts/view.py にメッセージ変数を設定する。 class CartView(SingleObjectMixin, View): ... flash_message = "" ... cart_item, created = CartItem.objects.get_or_create(cart=cart, item=item_instance) if created…

Django e-commerce part49 jQuery Flash Message

jQueryでフラッシュメッセージを表示させる。 product_detail.html に試しに入れてみる。 <div class="alert alert-success alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button> <strong>Warning!</strong> Better check yourself, you'r…</div>

Django e-commerce part48 Ajax part2

Cartの中で数量を変更したら、自動的に合計も計算される view.html を編集 タグを、更新などと一緒のテーブルに入れる。 <td> <form action="." method="GET"> <input type='hidden' name='item' value='{{ item.item.id }}'/> <input type='number' class='item-qty' name='qty' value='{{ item.quantity }}'/> </form></td>

Django e-commerce part47 Ajax Part1

Ajax を使う part1 products/product_detail.html のform タグにidをつけていく <form id='add-form' method='GET' action="{% url 'cart' %}"> <input class='form-control' type='number' name='qty' value='1' /> block jQuery にadd cartに関するajaxを書いていく。 <script> {% block jquery %} ... $("#submit-btn").click(function(event){ ev…</form>

Django e-commerce part46 Cart SubTotal

cartのsubtotalを表示する。 carts/models.py に追記 subtotal fieldを追加。subtotalのアップデートfunctionを追記する。 class Cart(models.Model): ... subtotal = models.DecimalField(max_digits=50, decimal_places=0, null=True, blank=True) def __s…

Django e-commerce part45 Cart Line Item Total

pre-save signalを使って、line itemのtotalを表示する CartItemにline_item_totalを追記 class CartItem(models.Model): cart = models.ForeignKey("Cart") item = models.ForeignKey(Variation) quantity = models.PositiveIntegerField(default=1) line_i…

Django e-commerce part44 Update Cart Item Quantity In Cart

カートの数量をカートの中で更新できるようにする。 carts/view.htmlを修正 {% extends "base.html" %} {% block content %} <table class='table'> {% for item in object.cartitem_set.all %} <tr> <form action="." method="GET"> <td>{{ item.item.get_title }}</td> # 以下のパラメータは、hiddenにして表示はしないが、r</form></tr></table>…