Получение не найденной страницы (404), которая открывается другим представлением - PullRequest
0 голосов
/ 02 апреля 2020

Ошибка получения страницы не найдена из-за другого представления Выдает ошибку при попытке перенаправить на любую страницу. Много пробовал искать что вызвало ошибку но не повезло. Помогите, пожалуйста!

Страница не найдена (404) Способ запроса: GET URL запроса: http://127.0.0.1: 8000 / счета / клиент / регистр / Поднято: products.views.ProductDetailSlugView Не найдено!

product views

# Create your views here.
class ProductListView(ListView):
    # queryset = Product.objects.all()
    template_name = 'products/product-list.html'

    def get_context_data(self, *args, **kwargs):
        context = super(ProductListView, self).get_context_data(*args, **kwargs)
        return context

    def get_queryset(self, *args, **kwargs):
        request = self.request
        return Product.objects.all()

class ProductDetailSlugView(DetailView):
    queryset = Product.objects.all()
    template_name = 'products/product-detail.html'

    def get_context_data(self, *args, **kwargs):
        context = super(ProductDetailSlugView, self).get_context_data(*args, **kwargs)
        return context

    def get_object(self, *args, **kwargs):
        request = self.request
        slug = self.kwargs.get('slug')
        try:
            instance = Product.objects.get(slug=slug, active=True)
        except Product.DoesNotExist:
            raise Http404("Not found!")
        except Product.MultipleObjectsReturned:
            qs = Product.objects.filter(slug=slug, active=True)
            instance = qs.first()
        except:
            raise Http404("Umm....")
        return instance

product urls

urlpatterns = [
    path('', ProductListView.as_view(),name='products-class'),
    url(r'(?P<slug>[\w-]+)/$', ProductDetailSlugView.as_view(),name='products-class-detail'),
]

register view

@unauthenticated_user
def register_page(request):
    form = CreateCustomerForm()
    if request.method == 'POST':
        form = CreateCustomerForm(request.POST)
        if form.is_valid():
            user = form.save()

            group = Group.objects.get(name='customer')
            user.groups.add(group)
            customer = Customer.objects.all()
            user_obj = customer.model(user=user)
            user_obj.save() 

            messages.success(request, 'Account created successfully!')
            return redirect('accounts:customer-login')
    context = {
        'form': form
    }
    return render(request, 'accounts/customer/customer-register-form.html', context)

account urls

urlpatterns = [
    path('customer/register/', customer.register_page, name='customer-register'),
]

main urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('products.urls', namespace='products')),
    path('cart/', include('cart.urls', namespace='cart')),
    path('accounts/', include('accounts.urls', namespace='accounts')),
]

base html

#navbar part
<li class="nav-item">
<a class="nav-link" href="/">Products</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'accounts:customer-register' %}">Signup</a>
</li>

register html

{% extends 'base.html' %}

{% block content %}
<h1>Customer</h1>
<form method="POST">
    {% csrf_token %}
    {{form.as_p}}
    <input type="submit">
</form>
{% endblock %}

1 Ответ

0 голосов
/ 06 апреля 2020

URL-адрес продукта-класса соответствовал каждому отдельному пути.

url(r'(?P<slug>[\w-]+)/$', ProductDetailSlugView.as_view(),name='products-class-detail')

Изменено на

url(r'product/(?P<slug>[\w-]+)/$', ProductDetailSlugView.as_view(),name='products-class-detail')

Кредит - над комментатором Иэн Шелвингтон

...