Я реализовал встроенный набор форм для этого проекта, и всякий раз, когда я перехожу к этому представлению, он показывает ошибку, указанную в названии. До этого мой товарищ по команде реализовал вкладку навигации на странице с помощью bootstrap.js. Чтобы вкладки работали, он ищет запрос для каждого представления. Я уже сталкивался с той же проблемой, но исправил ее, поскольку это не было представление на основе классов.Объект AttributeError 'str' не имеет атрибута 'path'
Теперь он показывает ту же ошибку, но из другого представления, и на этот раз это из CreateView, и он действительно не возвращает запрос, который ищет загрузочный лоток. Я не уверен, как подойти к этой проблеме, так может ли кто-нибудь предложить хороший старт для меня, чтобы устранить эту проблему?
Кстати, я не настолько опытен в Django, все еще учась, но достаточно, чтобы знать уголки и трещины.
Часть кода:
views.py (отрывок, заимствованный код от Kevin Dias)
class AddRecipe(CreateView):
template_name = 'addrecipe.html'
model = Recipes
form_class = RecipeForm
success_url = '/success/'
def get(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
ingredient_form = IngredientFormSet()
instruction_form = InstructionFormSet()
return self.render_to_response(
self.get_context_data(form = form,
ingredient_form = ingredient_form,
instruction_form = instruction_form),)
def post(self, request, *args, **kwargs):
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
ingredient_form = IngredientFormSet(self.request.POST)
instruction_form = InstructionFormSet(self.request.POST)
if (form.is_valid() and ingredient_form.is_valid() and instruction_form.is_valid()):
return self.form_valid(form, ingredient_form, instruction_form)
else:
return self.form_invalid(form, ingredient_form, instruction_form)
def form_valid(self, form, ingredient_form, instruction_form):
self.object = form.save()
ingredient_form.instance = self.object
ingredient_form.save()
instruction_form.instance = self.object
instruction_form.save()
return HttpResponseRedirect(self.get_success_url())
def form_invalid(self, form, ingredient_form, instruction_form):
return self.render_to_response(
self.get_context_data(form = form,
ingredient_form = ingredient_form,
instruction_form = instruction_form))
Вот код для вкладок в base.html
{% load tabs %}
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="{% active request "^/$" %}"><a href="/">Home</a></li>
<li class="{% active request "^/register/" %}"><a href="/register/">Register</a></li>
<li class="{% active request "^/myrecipes/" %}"><a href="/myrecipes/">My Recipes</a></li>
</ul>
<form class="navbar-form navbar-right" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
вид в urls.py
url(r'^addrecipe/', login_required(AddRecipe.as_view()),name='addrecipe',),
Я не совсем уверен, что это все детали, необходимые для решения этой проблемы. Не стесняйтесь комментировать, если кто-то хочет дальнейшей разработки. Благодаря!
Можете ли вы вставить стопку ошибки? –
@SunnyNanda: http://dpaste.com/1590169/ – XtraRyce
Ошибка исходит из 'd: \ Recipedia \ recipedia-web \ web \ templatetags \ tabs.py'. Можете ли вы вставить свой код? –