-
Notifications
You must be signed in to change notification settings - Fork 0
5. Order
Dmitry edited this page Dec 11, 2018
·
1 revision
path('shop/', include('shop.urls')),
#shop/urls.py
from django.urls import path, include
from .views import detail
urlpatterns = [
path('detail/<int:pk>', detail, name="detail")
]
def detail(request,pk):
pizza = Pizza.objects.get(pk=pk)
return render(request,'shop/detail.html',{'pizza': pizza})
from django.shortcuts import get_object_or_404
get_object_or_404(queryset, pk=1)
{% extends 'layout.html' %}
{% load widget_tweaks %}
{% load thumbnail %}
{% block content %}
<h1>Detail information</h1>
<div class="row">
<div class="col-md-8">
<h2>Detail</h2>
<div class="row">
</div>
</div>
<div class="col-md-4">
<h2>Order.</h2>
</div>
</div>
{% endblock %}
{% block footer %}
<h3>This is footer</h3>
{% endblock %}
pip install python_slugify==1.2.4
# model
from slugify import slugify
name_slug = models.CharField(max_length=150, default='')
def save(self, *args, **kwargs):
self.name_slug = slugify(self.name)
super(Pizza, self).save(*args, **kwargs)
def get_absolute_url(self):
from django.urls import reverse
return reverse('detail', kwargs={'slug': self.name_slug})
Url
path('detail/<str:slug>', detail, name="detail")
Template
<a href="{{p.get_absolute_url}}">
404
try:
pizza = Pizza.objects.get(name_slug=slug)
except:
raise Http404('Не смог найти пицку %s' % slug)
<a href="{% url 'make_order' id=pizza.id %}" class="btn btn-primary btn-lg">Order</a>
path('make_order/<int:pk>', make_order, name="make_order")
def make_order(request,pk):
pizza = get_object_or_404(Pizza,pk=pk)
orders = Order.objects.all()
pizza.make_order(request)
return render(request,'shop/order_list.html',{'pizza': pizza, 'orders': orders})
def make_order(self,request):
print('Making order!!!')
from shop.models import Order
o = Order.objects.create(
pizza = self
)