我正在进行章节7中的练习,我必须在每个类别页面上创建一个添加页面链接,该链接会将用户带到一个新页面,在该页面上他们可以输入名称和URL以添加到某个类别如果相关类别不存在,则会将其重定向到添加类别页面。
所以步骤是:
1.创建一个新视图(tut为我们准备好了这个视图)
def add_page(request, category_name_url):
context = RequestContext(request)
category_name = category_name_url.replace('_',' ')
if request.method == 'POST':
form = PageForm(request.POST)
if form.is_valid():
page = form.save(commit = False)
try:
cat = Category.objects.get(name = category_name)
page.category = cat
except Category.DoesNotExist:
return render_to_response('blog/add_category.html', {} , context)
page.views = 0
page.save()
return category(request, category_name_url)
else:
print form.errors
else:
form = PageForm()
return render_to_response('blog/add_page.html', {'category_name_url': category_name_url, 'category_name': category_name, 'form': form}, context)
2.创建一个新模板
<!DOCTYPE html>
<html>
<head>
<title> Drib </title>
</head>
<body>
<h1>Add Page</h1>
<form id = 'page_form' method = 'post' action = '/blog/add_page/'>
{% csrf_token %}
{%for hidden in forms.hidden_fields%}
{{hidden}}
{%for field in forms.visible_fields%}
{{field}}
{{field.errors}}
{{field.help_text}}
<input type = 'submit' name='Submit' value = "Add Page" />
</form>
</body>
</html>
3.URL Mapping
url(r'^category/(?P<category_name_url>\w+)/add_page/$', views.add_page , name = 'add_page')
4.从类别页面创建一个链接(我只是发布链接,因为没有意义发布整个文件......
<a href="/blog/category/{{category_name_url}}/add_page/"> Add Page</a>
来自tut的提示是:
- 通过将category_name_url插入视图的context_dict字典来更新category()视图 - DONE
- 使用URL映射更新rango / urls.py以处理上述链接。(我相信第3步)
我的问题是为什么点击添加页面后我得到
http://127.0.0.1:8000/blog/category/Python/blog/category/Python/add_page/
而不是
http://127.0.0.1:8000/blog/category/Python/add_page/
答案 0 :(得分:1)
那是因为
<a href="blog/category/{{category_name_url}}/add_page/"> Add Page</a>
是相对链接。这意味着href会附加到当前路径。
要使它成为绝对路径,只需在前面添加一个/,它会给你以下
<a href="/blog/category/{{category_name_url}}/add_page/"> Add Page</a>
^ Here's the leading slash
答案 1 :(得分:1)
要实际添加页面,您可以更改action
元素的form
属性
/blog/add_page/
到
/blog/category/{{ category_name_url }}/add_page/