我正在练习Django的通用视图,尤其是 ModelForms
这些是我的观点和模型
models.py
class Post(models.Model):
user = models.ForeignKey(User)
post_title = models.CharField(max_length=200)
post_content = models.CharField(max_length=500)
post_date = models.DateTimeField('date posted')
def get_absolute_url(self):
return reverse('user-detail', kwargs={'pk': self.pk})
def __unicode__(self):
return self.post_title
Run Code Online (Sandbox Code Playgroud)
表格
class PostForm(forms.ModelForm):
post_title = forms.CharField(
label=u'Title',
widget=forms.TextInput(attrs={'size':64})
)
post_content = forms.CharField(
label=u'Content',
widget=forms.TextInput(attrs={'size':128})
)
class Meta:
model = Post
Run Code Online (Sandbox Code Playgroud)
views.py
class PostCreate(CreateView):
fields = ['post_title', 'post_content']
template_name = 'app_blog/post_save_form.html'
model = Post
form_class = PostForm
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(PostCreate, self).dispatch(*args, **kwargs)
def form_valid(self, form):
self.object = form.save(commit=False) …Run Code Online (Sandbox Code Playgroud) 我很确定这个问题的答案显然是“否”,因为 Django mixins 应该
继承“对象”,但我找不到解决我的问题的替代方案:(
为了让问题尽可能简单,,,
视图.py
class JSONResponseMixin(object):
def render_to_response(self, context):
"Returns a JSON response containing 'context' as payload"
return self.get_json_response(self.convert_context_to_json(context))
def get_json_response(self, content, **httpresponse_kwargs):
"Construct an `HttpResponse` object."
return http.HttpResponse(content,
content_type='application/json',
**httpresponse_kwargs)
def convert_context_to_json(self, context):
"Convert the context dictionary into a JSON object"
# Note: This is *EXTREMELY* naive; in reality, you'll need
# to do much more complex handling to ensure that arbitrary
# objects -- such as Django model instances or querysets
# -- can be …Run Code Online (Sandbox Code Playgroud) 对不起标题中的混淆.
现在,我有两个继承BaseComment模型的Comment模型(QuestionComment和AnswerComment).我不得不这样做,因为每个Comment模型都涉及两个不同的对象(分别是问答).但是,我想知道是否有办法将这两个模型合二为一,而不必制作两个不同的评论模型.
由于我对不同的对象有两个不同的注释模型,我必须编写许多重复的模板,视图等.
有任何想法吗 :(((???
谢谢!!
models.py
class BaseComment(models.Model):
comment_author = models.ForeignKey(MyUser, related_name='written_comments')
comment_content = models.CharField(max_length=500)
comment_date = models.DateTimeField(auto_now_add=True)
rating = models.IntegerField(default=0)
class Meta:
abstract = True
class QuestionComment(BaseComment):
question = models.ForeignKey(Question, related_name='comments')
class AnswerComment(BaseComment):
answer = models.ForeignKey(Answer, related_name='comments')
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含子串的字符串
# the substrings and the whole string surrounded by parenthesis
string = '((substring1)(substring2))'
Run Code Online (Sandbox Code Playgroud)
我想使用正则表达式获取substring1和substring2,但我遇到了问题:(
这就是我现在拥有的:
match = re.search('(\(.*\))', string)
print match.groups()
Run Code Online (Sandbox Code Playgroud)
问题是,结果显示:
('(substring1)(substring2)', )
Run Code Online (Sandbox Code Playgroud)
似乎正则表达式只匹配第一个左括号和最后一个右括号.
换句话说,匹配的正则表达式就像..
( match..... )
Run Code Online (Sandbox Code Playgroud)
代替
( (match1)(match2) )
Run Code Online (Sandbox Code Playgroud)
如何使正则表达式捕获INNER括号?
谢谢