Python Django--仅显示用户创建的对象
我正在用遗留数据库构建Django应用程序。我有一个模型,LIST,它来自遗留数据库,不能真正更改。我也在使用标准的Django用户模型。理想情况下,这就是我希望发生的事情。用户注册,注册后重定向以创建新的列表对象。创建新的列表对象后,用户将重定向到一个视图,其中包含他们刚刚创建的列表对象中的数据。在随后的登录中,用户将返回到包含他们创建的列表对象数据的视图。截至目前,我已将用户模型扩展如下:Python Django--仅显示用户创建的对象,python,django,django-models,django-forms,django-urls,Python,Django,Django Models,Django Forms,Django Urls,我正在用遗留数据库构建Django应用程序。我有一个模型,LIST,它来自遗留数据库,不能真正更改。我也在使用标准的Django用户模型。理想情况下,这就是我希望发生的事情。用户注册,注册后重定向以创建新的列表对象。创建新的列表对象后,用户将重定向到一个视图,其中包含他们刚刚创建的列表对象中的数据。在随后的登录中,用户将返回到包含他们创建的列表对象数据的视图。截至目前,我已将用户模型扩展如下: class UserProfile(models.Model): user = models.
class UserProfile(models.Model):
user = models.OneToOneField(User)
list_id = models.OneToOneField(List, null=True)
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile, sender=User)
class ListForm(ModelForm):
error_css_class = 'text-error'
required_css_class = 'text-required'
class Meta:
model = models.List
fields = ('t_handle', 'facebook_id', 'pinterest_id', 'yelp_id', 'foursquare_id', 'yipit_id', )
def user_signup(request):
if request.method == 'POST':
form = forms.UserSignupForm(data=request.POST)
if form.is_valid():
user = form.save()
g = Group.objects.get(name='test_group')
g.user_set.add(user)
# log user in
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
login(request, user)
messages.success(request, u'Welcome to Social FollowUp')
return redirect('user_create')
else:
form = forms.UserSignupForm()
return TemplateResponse(request, 'user_signup.html', {
'form': form,
})
@login_required
@permission_required('')
def user_create(request):
if request.method == 'POST':
list_form = forms.ListForm(request.POST)
if list_form.is_valid():
list_create = list_form.save()
messages.success(request, 'List {0} created'.format(list_create.list_id))
return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example
else:
list_form = forms.ListForm()
return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form, })
def user_dashboard(request, list_id):
try:
list_id = models.List.objects.get(pk=list_id)
except models.List.DoesNotExist:
raise Http404
return TemplateResponse(request, 'dashboard/view.html', {'list_id': list_id})
我的列表表单如下所示:
class UserProfile(models.Model):
user = models.OneToOneField(User)
list_id = models.OneToOneField(List, null=True)
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile, sender=User)
class ListForm(ModelForm):
error_css_class = 'text-error'
required_css_class = 'text-required'
class Meta:
model = models.List
fields = ('t_handle', 'facebook_id', 'pinterest_id', 'yelp_id', 'foursquare_id', 'yipit_id', )
def user_signup(request):
if request.method == 'POST':
form = forms.UserSignupForm(data=request.POST)
if form.is_valid():
user = form.save()
g = Group.objects.get(name='test_group')
g.user_set.add(user)
# log user in
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
login(request, user)
messages.success(request, u'Welcome to Social FollowUp')
return redirect('user_create')
else:
form = forms.UserSignupForm()
return TemplateResponse(request, 'user_signup.html', {
'form': form,
})
@login_required
@permission_required('')
def user_create(request):
if request.method == 'POST':
list_form = forms.ListForm(request.POST)
if list_form.is_valid():
list_create = list_form.save()
messages.success(request, 'List {0} created'.format(list_create.list_id))
return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example
else:
list_form = forms.ListForm()
return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form, })
def user_dashboard(request, list_id):
try:
list_id = models.List.objects.get(pk=list_id)
except models.List.DoesNotExist:
raise Http404
return TemplateResponse(request, 'dashboard/view.html', {'list_id': list_id})
My views.py如下所示:
class UserProfile(models.Model):
user = models.OneToOneField(User)
list_id = models.OneToOneField(List, null=True)
def create_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile, sender=User)
class ListForm(ModelForm):
error_css_class = 'text-error'
required_css_class = 'text-required'
class Meta:
model = models.List
fields = ('t_handle', 'facebook_id', 'pinterest_id', 'yelp_id', 'foursquare_id', 'yipit_id', )
def user_signup(request):
if request.method == 'POST':
form = forms.UserSignupForm(data=request.POST)
if form.is_valid():
user = form.save()
g = Group.objects.get(name='test_group')
g.user_set.add(user)
# log user in
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
login(request, user)
messages.success(request, u'Welcome to Social FollowUp')
return redirect('user_create')
else:
form = forms.UserSignupForm()
return TemplateResponse(request, 'user_signup.html', {
'form': form,
})
@login_required
@permission_required('')
def user_create(request):
if request.method == 'POST':
list_form = forms.ListForm(request.POST)
if list_form.is_valid():
list_create = list_form.save()
messages.success(request, 'List {0} created'.format(list_create.list_id))
return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example
else:
list_form = forms.ListForm()
return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form, })
def user_dashboard(request, list_id):
try:
list_id = models.List.objects.get(pk=list_id)
except models.List.DoesNotExist:
raise Http404
return TemplateResponse(request, 'dashboard/view.html', {'list_id': list_id})
最后,my urls.py包含以下内容:
url(r'user/signup/$', views.user_signup, name='user_signup'),
url(r'u/dashboard/(?P<list_id>\d+)/$', views.user_dashboard, name='user_dashboard'),
url(r'u/list/create/$', views.user_create, name='user_create'),
url(r'user/signup/$,views.user\u signup,name='user\u signup'),
url(r'u/dashboard/(?P\d+/$),views.user\u dashboard,name='user\u dashboard'),
url(r'u/list/create/$,views.user\u create,name='user\u create'),
基本上我不知道如何让我想要的发生,发生。每当用户注册并创建列表对象时,列表id不会保存到我创建的userProfile表中。我甚至不能100%确定我需要那张桌子。有人能帮我吗?在您的
用户创建视图中
def user_create(request):
if request.method == 'POST':
list_form = forms.ListForm(request.POST)
if list_form.is_valid():
list_create = list_form.save()
messages.success(request, 'List {0} created'.format(list_create.list_id))
up, _ = UserProfile.objects.get_or_create(user=request.user, list_id=list_create)
return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example
#rest of the code
基本上,您所需要做的就是创建一个userprofile对象 你的列表表单看起来怎么样?我刚刚用我的列表表单更新了帖子。我得到一个全局名称“UserProfile”没有定义错误。我正在我的view.py文件中导入模型。我缺少什么?你需要从models import UserProfile中执行操作
太棒了!总的来说:为什么我必须特别导入该模型,即使我正在导入模型?在我添加了它并从models.py文件中删除了信号之后,它工作得非常好。谢谢你最近帮了我很多忙,谢谢!好。。虽然您导入了文件,但您需要专门导入模型对象,这是一个很好的功能,因为它可以减少名称冲突时的混淆。您甚至可以从.models import*执行