【发布时间】:2014-07-06 15:55:24
【问题描述】:
我正在做 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映射
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() 视图以传递 category_name_url - 完成
- 使用指向 /rango/category//add_page/ 的链接更新 category.html。确保链接仅在请求的类别存在时出现 - 有或没有页面。 - 我相信我在第 4 步中做到了(虽然不是 100% 肯定)
-使用 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/
【问题讨论】:
-
在
<a href="/blog/category/{{category_name_url}}/add_page/"> Add Page</a>中添加斜线有帮助吗? -
您是否重启了服务器才能看到更改生效?
-
我收回了...它确实有效,只是我错误地添加了一个符号...
标签: python django macos django-1.6