提交表单后,我无法返回正确的网址。我可以通过将其指向索引页面来使其工作,但我希望它指向新创建的项目URL。例如,我希望网址看起来像这样:
www.example.com/username/project-slug
我已经尝试了大约5个小时而没有运气:-(。任何帮助都会非常感激!
视图
class CreateProject(CreateView):
model = UserProject
form_class = UserProjectForm
template_name = 'howdidu/create_project.html'
#success_url = "/"
def form_valid(self, form):
form.instance.user = self.request.user
self.object = form.save()
return super(CreateProject, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('index')
网址
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^register_profile/$', views.register_profile, name='register_profile'),
url(r'^update_profile/$', views.update_profile, name='update_profile'),
url(r'^create_project/$', views.CreateProject.as_view(), name='create_project'),
url(r'^(?P<username>\w+)/$', views.profile_page, name='user_profile'),
url(r'^(?P<project_title_slug>[\w-]+)/$', views.project_page, name='user_project'),
)
模型
class UserProject(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=100)
project_overview = models.CharField(max_length=1000)
project_picture = models.ImageField(upload_to='project_images', blank=True)
date_created = models.DateTimeField(auto_now_add=True)
project_views = models.IntegerField(default=0)
project_likes = models.IntegerField(default=0)
project_followers = models.IntegerField(default=0)
slug = models.SlugField(max_length=100, unique=True) #should this be unique or not?
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(UserProject, self).save(*args, **kwargs)
def __unicode__(self):
return self.title
项目网址
url(r'^admin/', include(admin.site.urls)),
url(r'', include('howdidu.urls')),
url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register'), #redirects to home page after registration
(r'^accounts/', include('registration.backends.simple.urls')),
url(r'^(?P<username>\w+)/', include('howdidu.urls')), #do i need this?
答案 0 :(得分:0)
您可以在get_success_url
def get_success_url(self):
username = self.kwargs.get('username', None)
project_slug = self.kwargs.get('project_title_slug', None)
return reverse('user_project', kwargs={
'username': username,
'project_title_slug': project_slug
})
user_project
是网址的名称,但我不知道这是否是您需要匹配的网址。
根据您的网址定义更改您需要的任何内容