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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to