0

iam new to django and i started a blog app. after a while when i want to login into the admin 0.0.0.1:8000/admin I get an error DoesNotExist at /admin/login/

Site matching query does not exist. I have no idea why. Maybe it has something to do, that I installed django-registration-redux or with my urlpatterns in main and in the blog app. Maybe somebody can give me advice also about better urlpatterns? My main aim is to do a create view with login required mixin. This doesnt work too when i put the loginrequiredmixin in the class blog_postCreateView.

I appreciate every help. Iam new (noob). Looking forward for your answer. IF there is anything what i can improve just tell me , thanks

Thanks a lot

main url

from django.conf.urls import url, include
from django.contrib import admin

from blog.views import AboutPageView, ContactPageView, blog_postCreateView

urlpatterns = [
    url(r'', include('blog.urls')),
    url(r'^blog/', include('blog.urls')),
    url(r'^about/$', AboutPageView.as_view(), name='about'),
    url(r'^contact/$', ContactPageView.as_view(), name='contact'),
    url(r'^create/$', blog_postCreateView.as_view(), name='blog_post_create'),
   #admin and login
   url(r'^admin/', admin.site.urls), 
   url(r'^accounts/', include('registration.backends.default.urls')),

]

blog urls

from django.conf.urls import url

from .views import blog_postListView, blog_postDetailView, blog_postCreateView 

urlpatterns = [

    url(r'^$', blog_postListView.as_view(), name='blog_post_list'),
    url(r'^(?P<slug>[-\w]+)$', blog_postDetailView.as_view(), name='blog_post_detail'),

]

views

from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from django.http import HttpResponse
from django.views.generic import View
from django.views.generic.base import TemplateView, TemplateResponseMixin, ContextMixin
from django.views.generic.detail import DetailView
from django.views.generic.list import ListView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.shortcuts import render
from django.utils.decorators import method_decorator




from .models import blog_post
from .forms import blog_postForm
# Create your views here.


class LoginRequiredMixin(object):
     @classmethod
     def as_view(cls, **kwargs):
       view = super(LoginRequiredMixin, cls).as_view(**kwargs)
       return login_required(view)

    #@method_decorator(login_required)
    #def dispatch(self, request, *args, **kwargs):
    #    return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)



class blog_postCreateView(CreateView):
    #model = blog_post
    form_class = blog_postForm
    template_name = "form.html"
    #fields = ["title", "content"]
    def get_success_url(self):
        return reverse("blog_post_list")

    # @method_decorator(login_required)
    # def dispatch(self, request, *args, **kwargs):
    #   return super(MyView, self).dispatch(request, *args, **kwargs)    


class blog_postListView(ListView):

    model = blog_post
    def get_queryset(self, *args, **kwargs):
        qs = super(blog_postListView, self).get_queryset(*args, **kwargs).order_by("-timestamp")
        return qs

class blog_postDetailView(DetailView):

    model = blog_post

class AboutPageView(TemplateView):

    template_name = "about.html"


class ContactPageView(TemplateView):

    template_name = "contact.html"   



models 

from __future__ import unicode_literals

from django.conf import settings
from django.core.urlresolvers import reverse
from django.db import models

from django.db.models.signals import pre_save, post_save
from django.utils.text import slugify
# Create your models here.

class blog_post(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
    title = models.CharField(max_length=120)
    slug = models.SlugField(unique=True)
    content = models.TextField()
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

    def __unicode__(self):
        return self.title

    def __str__(self):
        return self.title   

    def get_absolute_url(self):
        return reverse("blog_post_detail", kwargs={"slug": self.slug})


def create_slug(instance, new_slug=None):
    slug = slugify(instance.title)
    if new_slug is not None:
        slug = new_slug
    qs = blog_post.objects.filter(slug=slug).order_by("-id")
    exists = qs.exists()
    if exists:
        new_slug = "%s-%s" %(slug, qs.first().id)
        return create_slug(instance, new_slug=new_slug)
    return slug


def pre_save_post_receiver(sender, instance, *args, **kwargs):
    if not instance.slug:
        instance.slug = create_slug(instance)



pre_save.connect(pre_save_post_receiver, sender=blog_post)

forms

from django import forms


from .models import blog_post


class blog_postForm(forms.ModelForm):
    class Meta:
        model = blog_post
        fields = [
            'title',
            'content',
]
Robert F.
  • 139
  • 2
  • 13
  • 2
    Possible duplicate of [Getting Site Matching Query Does Not Exist Error after creating django admin](http://stackoverflow.com/questions/11476210/getting-site-matching-query-does-not-exist-error-after-creating-django-admin) – souldeux Sep 28 '16 at 15:39
  • found the answer by myself, it was the missing site_id in settings and after also the class LoginRequiredMixin(object) worked and i could use it in the createview – Robert F. Sep 28 '16 at 16:12

0 Answers0