Hi!
You have two entrys with same name

path('', views.post_new, name='new_post'),
    path('', TemplateView.as_view(template_name='new_post.html'), name=
'new_post'),

Try to change one


Regards

El dg., 21 d’abr. 2019, 16:18, <silverstrings...@gmail.com> va escriure:

> Hello, i'm attempting to redirect to a 'new post' page when someone clicks
> 'New Post'. Problem is, it redirects back to the public_posts page. the url
> in my HTML is {%  url 'new_post' %} but when i inspect the element in my
> browser, it says the href=/public_posts/ and no matter what I do, I can't
> get it to redirect/link correctly.
>
>
> *RELEVANT FILES*
>
> #public_posts/forms.py
>
>
>
> from django import forms
> from .models import Post
>
> class PublicPostForm(forms.ModelForm):
>
>     class Meta:
>         model = Post
>         fields = ('title', 'text',)
>
>
>
> #public_posts/urls.py
>
>
> from django.urls import path
> from django.conf.urls import url
> from . import views
> from django.views.generic import TemplateView
>
> urlpatterns = [
>     path('', views.pub_post_list, name='pub_posts'),
>     path('', views.post_new, name='new_post'),
>     path('', TemplateView.as_view(template_name='new_post.html'), name=
> 'new_post'),
>     path('', TemplateView.as_view(template_name='pub_posts.html'), name=
> 'pub_posts'),
> ]
>
>
>
> #public_posts/views.py
>
>
> from django.shortcuts import render
> from django.utils import timezone
> from .models import Post
> from django.urls import reverse_lazy
> from django.views import generic
> from django.http import HttpResponseRedirect
> from django.shortcuts import render
> from .forms import PublicPostForm
>
> # Create your views here.
>
> def pub_post_list(request):
>
>     posts = Post.objects.filter(published_date__lte=timezone.now()).
> order_by('published_date')
>     return render(request, 'public_posts/pub_posts.html', {'posts': posts
> })
>
> def post_new(request):
>     form = PublicPostForm()
>     posts = Post.objects.filter(published_date__lte=timezone.now()).
> order_by('published_date')
>
>     #if this is a POST request we need to process the form data
>
>     if request.method == 'POST':
>         # create a form instance and populate it with data from the
> request:
>         form = PublicPostForm(request.POST)
>         # check whether it's valid:
>         if form.is_valid():
>             # process the data in form.cleaned_data as required
>             post.publish()
>             post.save()
>
>             # redirect to a new URL:
> #            return HttpResponseRedirect('/new_post/') Commented out to
> try render()
>             return render(request, 'public_posts/new_post.html', {'form':
> form})
>
>     # if a GET (or any other method) we'll create a blank form
>     else:
>         form = PublicPostForm()
>     return render(request,  'public_posts/new_post.html', {'posts': posts
> })
>
>
>
>
> #public_posts/models.py
>
>
> from django.conf import settings
> from django.db import models
> from django.utils import timezone
> from django.utils.http import urlquote
> from django.utils.translation import ugettext_lazy as _
> from django.core.mail import send_mail
> from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
> from django.contrib.auth.models import BaseUserManager
> from django.contrib.auth import get_user_model
>
>
> User = get_user_model()
>
>
> class Post(models.Model):
>     author = models.ForeignKey(User, related_name='pub_poster', on_delete=
> models.CASCADE)
>     title = models.CharField(max_length=200)
>     text = models.TextField()
>     created_date = models.DateTimeField(default=timezone.now)
>     published_date = models.DateTimeField(blank=True, null=True)
>
>     def publish(self):
>         self.published_date = timezone.now()
>         self.save()
>
>     def __str__(self):
>         return self.title
>
> *URLCONFIG*
>
> from django.contrib import admin
> from django.urls import path, include, resolve
> from django.conf.urls import url
> from admin_posts.views import home
> from public_posts.views import post_new, pub_post_list
> from django.views.generic.base import TemplateView
>
> urlpatterns = [
>     path('admin/', admin.site.urls),
>     path('', home, name='home'),
>     path('admin_posts/', include('admin_posts.urls')),
>     path('', pub_post_list, name='pub_posts'),
>     path('', post_new, name='post_new'),
>     path('public_posts/', include('public_posts.urls')),
>     url(r'^accounts/', include('allauth.urls')),
>     path('users/', include('users.urls')),
>
> ]
>
>
>
>
>
> REVELANT HTML
>
>
>
> <li class="new_post">
>                 <h4><a href="{% url 'new_post' %}">New Post</a></h4>
>             </li>
>
>
>
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/223a713a-d980-4e98-8b3a-ef58553a3ec1%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/223a713a-d980-4e98-8b3a-ef58553a3ec1%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAK-JoTT78V1_%2BYycWjwU9zxOa6rFvd2DfZaxAhgjEwms%3DEuW2Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to